{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Pre-trained Model Library\n",
    "\n",
    "**XenonPy.MDL** is a library of pre-trained models that were obtained by feeding diverse materials data on structure-property relationships into neural networks and some other supervised learning models.\n",
    "\n",
    "XenonPy offers a simple-to-use toolchain to perform **transfer learning** with the given **pre-trained models** seamlessly.\n",
    "In this tutorial, we will focus on model querying and retrieving."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### useful functions\n",
    "\n",
    "Running the following cell will load some commonly used packages, such as [NumPy](https://numpy.org/), [pandas](https://pandas.pydata.org/), and so on. It will also import some in-house functions used in this tutorial. See *'tools.ipynb'* file to check what will be imported."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%run tools.ipynb"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### access pre-trained models with MDL class\n",
    "\n",
    "We prepared a wide range of APIs to let you query and download our models.\n",
    "These APIs can be accessed via any HTTP requests.\n",
    "For convenience, we implemented some of the most popular APIs and wrapped them into XenonPy.\n",
    "All these functions can be accessed using `xenonpy.mdl.MDL`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# --- import necessary libraries\n",
    "\n",
    "from xenonpy.mdl import MDL"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "MDL(api_key='anonymous.user.key', endpoint='http://xenon.ism.ac.jp/api')"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "'0.1.1'"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# --- init and check\n",
    "\n",
    "mdl = MDL()\n",
    "mdl\n",
    "\n",
    "mdl.version"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Noticed that ``mdl`` contains optional parameters ``api_key`` and ``endpoint``.\n",
    "``endpoint`` point to where data is fetched. ``api_key`` is an access token used to validate the authorization and action permissions.\n",
    "At this moment, the defaulat key, ``anonymous.user.key``, is the only valid option.\n",
    "We will open the public registration system when the system is ready."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### querying\n",
    "\n",
    "There are many ways to query models. The most straightforward method is to use `mdl`.\n",
    "It accepts variable keywords as input and any hit keyword will be returned. For example, to query models that predict property **refractive index**:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "QueryModelDetails(api_key='anonymous.user.key', endpoint='http://xenon.ism.ac.jp/api', variables={'query': ('refractive',)})\n",
       "Queryable: \n",
       " id\n",
       " transferred\n",
       " succeed\n",
       " isRegression\n",
       " deprecated\n",
       " modelset\n",
       " method\n",
       " property\n",
       " descriptor\n",
       " lang\n",
       " accuracy\n",
       " precision\n",
       " recall\n",
       " f1\n",
       " sensitivity\n",
       " prevalence\n",
       " specificity\n",
       " ppv\n",
       " npv\n",
       " meanAbsError\n",
       " maxAbsError\n",
       " meanSquareError\n",
       " rootMeanSquareError\n",
       " r2\n",
       " pValue\n",
       " spearmanCorr\n",
       " pearsonCorr"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# --- query data\n",
    "\n",
    "query = mdl('refractive')\n",
    "query"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can see that run a querying method does not execute the querying immediately, but simply return a queryable object.\n",
    "If you print out the object, the `queryable` list will be shown. Only the variables in the list can be fetched from the server.\n",
    "\n",
    "Another way to get the `queryable` list is call `query.queryable` as below:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['id',\n",
       " 'transferred',\n",
       " 'succeed',\n",
       " 'isRegression',\n",
       " 'deprecated',\n",
       " 'modelset',\n",
       " 'method',\n",
       " 'property',\n",
       " 'descriptor',\n",
       " 'lang',\n",
       " 'accuracy',\n",
       " 'precision',\n",
       " 'recall',\n",
       " 'f1',\n",
       " 'sensitivity',\n",
       " 'prevalence',\n",
       " 'specificity',\n",
       " 'ppv',\n",
       " 'npv',\n",
       " 'meanAbsError',\n",
       " 'maxAbsError',\n",
       " 'meanSquareError',\n",
       " 'rootMeanSquareError',\n",
       " 'r2',\n",
       " 'pValue',\n",
       " 'spearmanCorr',\n",
       " 'pearsonCorr']"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query.queryable"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's say we only want to know the variables of `modelset`, `method`, `property`, `descriptor`, `meanAbsError`, `meanSquareError`, `pValue`, and `pearsonCorr`. Execute the query as follow:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>modelset</th>\n",
       "      <th>method</th>\n",
       "      <th>property</th>\n",
       "      <th>descriptor</th>\n",
       "      <th>meanAbsError</th>\n",
       "      <th>meanSquareError</th>\n",
       "      <th>pValue</th>\n",
       "      <th>pearsonCorr</th>\n",
       "      <th>id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>Stable inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>0.422960</td>\n",
       "      <td>0.418109</td>\n",
       "      <td>None</td>\n",
       "      <td>0.631021</td>\n",
       "      <td>2335</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>Stable inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>0.545381</td>\n",
       "      <td>1.641444</td>\n",
       "      <td>None</td>\n",
       "      <td>0.578646</td>\n",
       "      <td>2338</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>Stable inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>0.708027</td>\n",
       "      <td>3.087893</td>\n",
       "      <td>None</td>\n",
       "      <td>0.439089</td>\n",
       "      <td>2339</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>Stable inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>0.585778</td>\n",
       "      <td>2.238217</td>\n",
       "      <td>None</td>\n",
       "      <td>0.531137</td>\n",
       "      <td>2341</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>Stable inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>0.542811</td>\n",
       "      <td>2.174997</td>\n",
       "      <td>None</td>\n",
       "      <td>0.558526</td>\n",
       "      <td>2342</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3595</td>\n",
       "      <td>Polymer Genome Dataset</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>organic.polymer.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>0.082331</td>\n",
       "      <td>0.019165</td>\n",
       "      <td>None</td>\n",
       "      <td>0.824684</td>\n",
       "      <td>31191</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3596</td>\n",
       "      <td>Polymer Genome Dataset</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>organic.polymer.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>0.094522</td>\n",
       "      <td>0.023909</td>\n",
       "      <td>None</td>\n",
       "      <td>0.667404</td>\n",
       "      <td>31192</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3597</td>\n",
       "      <td>Polymer Genome Dataset</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>organic.polymer.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>0.128509</td>\n",
       "      <td>0.039972</td>\n",
       "      <td>None</td>\n",
       "      <td>0.680136</td>\n",
       "      <td>31193</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3598</td>\n",
       "      <td>Polymer Genome Dataset</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>organic.polymer.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>0.096644</td>\n",
       "      <td>0.025381</td>\n",
       "      <td>None</td>\n",
       "      <td>0.704920</td>\n",
       "      <td>31194</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3599</td>\n",
       "      <td>Polymer Genome Dataset</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>organic.polymer.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>0.122035</td>\n",
       "      <td>0.040172</td>\n",
       "      <td>None</td>\n",
       "      <td>0.679644</td>\n",
       "      <td>31195</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3600 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                             modelset  \\\n",
       "0     Stable inorganic compounds in materials project   \n",
       "1     Stable inorganic compounds in materials project   \n",
       "2     Stable inorganic compounds in materials project   \n",
       "3     Stable inorganic compounds in materials project   \n",
       "4     Stable inorganic compounds in materials project   \n",
       "...                                               ...   \n",
       "3595                           Polymer Genome Dataset   \n",
       "3596                           Polymer Genome Dataset   \n",
       "3597                           Polymer Genome Dataset   \n",
       "3598                           Polymer Genome Dataset   \n",
       "3599                           Polymer Genome Dataset   \n",
       "\n",
       "                         method                            property  \\\n",
       "0     pytorch.nn.neural_network  inorganic.crystal.refractive_index   \n",
       "1     pytorch.nn.neural_network  inorganic.crystal.refractive_index   \n",
       "2     pytorch.nn.neural_network  inorganic.crystal.refractive_index   \n",
       "3     pytorch.nn.neural_network  inorganic.crystal.refractive_index   \n",
       "4     pytorch.nn.neural_network  inorganic.crystal.refractive_index   \n",
       "...                         ...                                 ...   \n",
       "3595  pytorch.nn.neural_network    organic.polymer.refractive_index   \n",
       "3596  pytorch.nn.neural_network    organic.polymer.refractive_index   \n",
       "3597  pytorch.nn.neural_network    organic.polymer.refractive_index   \n",
       "3598  pytorch.nn.neural_network    organic.polymer.refractive_index   \n",
       "3599  pytorch.nn.neural_network    organic.polymer.refractive_index   \n",
       "\n",
       "                descriptor  meanAbsError  meanSquareError pValue  pearsonCorr  \\\n",
       "0     xenonpy.compositions      0.422960         0.418109   None     0.631021   \n",
       "1     xenonpy.compositions      0.545381         1.641444   None     0.578646   \n",
       "2     xenonpy.compositions      0.708027         3.087893   None     0.439089   \n",
       "3     xenonpy.compositions      0.585778         2.238217   None     0.531137   \n",
       "4     xenonpy.compositions      0.542811         2.174997   None     0.558526   \n",
       "...                    ...           ...              ...    ...          ...   \n",
       "3595  xenonpy.compositions      0.082331         0.019165   None     0.824684   \n",
       "3596  xenonpy.compositions      0.094522         0.023909   None     0.667404   \n",
       "3597  xenonpy.compositions      0.128509         0.039972   None     0.680136   \n",
       "3598  xenonpy.compositions      0.096644         0.025381   None     0.704920   \n",
       "3599  xenonpy.compositions      0.122035         0.040172   None     0.679644   \n",
       "\n",
       "         id  \n",
       "0      2335  \n",
       "1      2338  \n",
       "2      2339  \n",
       "3      2341  \n",
       "4      2342  \n",
       "...     ...  \n",
       "3595  31191  \n",
       "3596  31192  \n",
       "3597  31193  \n",
       "3598  31194  \n",
       "3599  31195  \n",
       "\n",
       "[3600 rows x 9 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query(\n",
    "    'modelset',\n",
    "    'method',\n",
    "    'property',\n",
    "    'descriptor',\n",
    "    'meanAbsError',  \n",
    "    'meanSquareError',\n",
    "    'pValue',\n",
    "    'pearsonCorr' \n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If everything goes right, you will get a pandas DataFrame in return.\n",
    "You can see that 3600 models matched the keyword and these models are contained in two sets of models.\n",
    "Note that all variables in column `pValue` are `None`. This is not a querying error, all variables are `None` indeed, because they were not recorded during training.\n",
    "\n",
    "You can also retrieve the last querying result from the query object via the `results` property."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>modelset</th>\n",
       "      <th>method</th>\n",
       "      <th>property</th>\n",
       "      <th>descriptor</th>\n",
       "      <th>meanAbsError</th>\n",
       "      <th>meanSquareError</th>\n",
       "      <th>pValue</th>\n",
       "      <th>pearsonCorr</th>\n",
       "      <th>id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>Stable inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>0.422960</td>\n",
       "      <td>0.418109</td>\n",
       "      <td>None</td>\n",
       "      <td>0.631021</td>\n",
       "      <td>2335</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>Stable inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>0.545381</td>\n",
       "      <td>1.641444</td>\n",
       "      <td>None</td>\n",
       "      <td>0.578646</td>\n",
       "      <td>2338</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>Stable inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>0.708027</td>\n",
       "      <td>3.087893</td>\n",
       "      <td>None</td>\n",
       "      <td>0.439089</td>\n",
       "      <td>2339</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                          modelset                     method  \\\n",
       "0  Stable inorganic compounds in materials project  pytorch.nn.neural_network   \n",
       "1  Stable inorganic compounds in materials project  pytorch.nn.neural_network   \n",
       "2  Stable inorganic compounds in materials project  pytorch.nn.neural_network   \n",
       "\n",
       "                             property            descriptor  meanAbsError  \\\n",
       "0  inorganic.crystal.refractive_index  xenonpy.compositions      0.422960   \n",
       "1  inorganic.crystal.refractive_index  xenonpy.compositions      0.545381   \n",
       "2  inorganic.crystal.refractive_index  xenonpy.compositions      0.708027   \n",
       "\n",
       "   meanSquareError pValue  pearsonCorr    id  \n",
       "0         0.418109   None     0.631021  2335  \n",
       "1         1.641444   None     0.578646  2338  \n",
       "2         3.087893   None     0.439089  2339  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query.results.head(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Querying with `mdl` is simple but not efficient enough. In most cases, we may know exactly what we want.\n",
    "\n",
    "Let's say we want to retrieve some models that were trained in the inorganic modelset and can predict the property of refractive index.\n",
    "In this case, we need to feed the parameter `modelset_has` with **inorganic** and the `property_has` with **refractive**, respectively."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>transferred</th>\n",
       "      <th>succeed</th>\n",
       "      <th>isRegression</th>\n",
       "      <th>deprecated</th>\n",
       "      <th>modelset</th>\n",
       "      <th>method</th>\n",
       "      <th>property</th>\n",
       "      <th>descriptor</th>\n",
       "      <th>lang</th>\n",
       "      <th>meanAbsError</th>\n",
       "      <th>maxAbsError</th>\n",
       "      <th>meanSquareError</th>\n",
       "      <th>rootMeanSquareError</th>\n",
       "      <th>r2</th>\n",
       "      <th>pValue</th>\n",
       "      <th>spearmanCorr</th>\n",
       "      <th>pearsonCorr</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2335</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>Stable inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>python</td>\n",
       "      <td>0.422960</td>\n",
       "      <td>1.782320</td>\n",
       "      <td>0.418109</td>\n",
       "      <td>0.646613</td>\n",
       "      <td>0.226642</td>\n",
       "      <td>None</td>\n",
       "      <td>0.805147</td>\n",
       "      <td>0.631021</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2338</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>Stable inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>python</td>\n",
       "      <td>0.545381</td>\n",
       "      <td>8.948927</td>\n",
       "      <td>1.641444</td>\n",
       "      <td>1.281188</td>\n",
       "      <td>0.330978</td>\n",
       "      <td>None</td>\n",
       "      <td>0.808188</td>\n",
       "      <td>0.578646</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2339</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>Stable inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>python</td>\n",
       "      <td>0.708027</td>\n",
       "      <td>10.142218</td>\n",
       "      <td>3.087893</td>\n",
       "      <td>1.757240</td>\n",
       "      <td>0.173911</td>\n",
       "      <td>None</td>\n",
       "      <td>0.839800</td>\n",
       "      <td>0.439089</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>2341</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>Stable inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>python</td>\n",
       "      <td>0.585778</td>\n",
       "      <td>11.835847</td>\n",
       "      <td>2.238217</td>\n",
       "      <td>1.496067</td>\n",
       "      <td>0.241867</td>\n",
       "      <td>None</td>\n",
       "      <td>0.690957</td>\n",
       "      <td>0.531137</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>2342</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>Stable inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>python</td>\n",
       "      <td>0.542811</td>\n",
       "      <td>11.045835</td>\n",
       "      <td>2.174997</td>\n",
       "      <td>1.474787</td>\n",
       "      <td>0.275737</td>\n",
       "      <td>None</td>\n",
       "      <td>0.886405</td>\n",
       "      <td>0.558526</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2395</td>\n",
       "      <td>4863</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>All inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>python</td>\n",
       "      <td>0.429642</td>\n",
       "      <td>2.204849</td>\n",
       "      <td>0.434043</td>\n",
       "      <td>0.658819</td>\n",
       "      <td>0.441885</td>\n",
       "      <td>None</td>\n",
       "      <td>0.808280</td>\n",
       "      <td>0.712245</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2396</td>\n",
       "      <td>4865</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>All inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>python</td>\n",
       "      <td>0.569579</td>\n",
       "      <td>7.622173</td>\n",
       "      <td>1.656191</td>\n",
       "      <td>1.286931</td>\n",
       "      <td>0.215002</td>\n",
       "      <td>None</td>\n",
       "      <td>0.829544</td>\n",
       "      <td>0.475225</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2397</td>\n",
       "      <td>4867</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>All inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>python</td>\n",
       "      <td>0.436152</td>\n",
       "      <td>2.635126</td>\n",
       "      <td>0.559099</td>\n",
       "      <td>0.747729</td>\n",
       "      <td>0.426260</td>\n",
       "      <td>None</td>\n",
       "      <td>0.834226</td>\n",
       "      <td>0.655400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2398</td>\n",
       "      <td>4868</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>All inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>python</td>\n",
       "      <td>0.383506</td>\n",
       "      <td>2.473203</td>\n",
       "      <td>0.339653</td>\n",
       "      <td>0.582797</td>\n",
       "      <td>0.599966</td>\n",
       "      <td>None</td>\n",
       "      <td>0.840016</td>\n",
       "      <td>0.798442</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2399</td>\n",
       "      <td>4871</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>All inorganic compounds in materials project</td>\n",
       "      <td>pytorch.nn.neural_network</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td>xenonpy.compositions</td>\n",
       "      <td>python</td>\n",
       "      <td>0.394862</td>\n",
       "      <td>2.490165</td>\n",
       "      <td>0.397413</td>\n",
       "      <td>0.630407</td>\n",
       "      <td>0.674495</td>\n",
       "      <td>None</td>\n",
       "      <td>0.800693</td>\n",
       "      <td>0.839631</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2400 rows × 18 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        id  transferred  succeed  isRegression  deprecated  \\\n",
       "0     2335        False     True          True       False   \n",
       "1     2338        False     True          True       False   \n",
       "2     2339        False     True          True       False   \n",
       "3     2341        False     True          True       False   \n",
       "4     2342        False     True          True       False   \n",
       "...    ...          ...      ...           ...         ...   \n",
       "2395  4863        False     True          True       False   \n",
       "2396  4865        False     True          True       False   \n",
       "2397  4867        False     True          True       False   \n",
       "2398  4868        False     True          True       False   \n",
       "2399  4871        False     True          True       False   \n",
       "\n",
       "                                             modelset  \\\n",
       "0     Stable inorganic compounds in materials project   \n",
       "1     Stable inorganic compounds in materials project   \n",
       "2     Stable inorganic compounds in materials project   \n",
       "3     Stable inorganic compounds in materials project   \n",
       "4     Stable inorganic compounds in materials project   \n",
       "...                                               ...   \n",
       "2395     All inorganic compounds in materials project   \n",
       "2396     All inorganic compounds in materials project   \n",
       "2397     All inorganic compounds in materials project   \n",
       "2398     All inorganic compounds in materials project   \n",
       "2399     All inorganic compounds in materials project   \n",
       "\n",
       "                         method                            property  \\\n",
       "0     pytorch.nn.neural_network  inorganic.crystal.refractive_index   \n",
       "1     pytorch.nn.neural_network  inorganic.crystal.refractive_index   \n",
       "2     pytorch.nn.neural_network  inorganic.crystal.refractive_index   \n",
       "3     pytorch.nn.neural_network  inorganic.crystal.refractive_index   \n",
       "4     pytorch.nn.neural_network  inorganic.crystal.refractive_index   \n",
       "...                         ...                                 ...   \n",
       "2395  pytorch.nn.neural_network  inorganic.crystal.refractive_index   \n",
       "2396  pytorch.nn.neural_network  inorganic.crystal.refractive_index   \n",
       "2397  pytorch.nn.neural_network  inorganic.crystal.refractive_index   \n",
       "2398  pytorch.nn.neural_network  inorganic.crystal.refractive_index   \n",
       "2399  pytorch.nn.neural_network  inorganic.crystal.refractive_index   \n",
       "\n",
       "                descriptor    lang  meanAbsError  maxAbsError  \\\n",
       "0     xenonpy.compositions  python      0.422960     1.782320   \n",
       "1     xenonpy.compositions  python      0.545381     8.948927   \n",
       "2     xenonpy.compositions  python      0.708027    10.142218   \n",
       "3     xenonpy.compositions  python      0.585778    11.835847   \n",
       "4     xenonpy.compositions  python      0.542811    11.045835   \n",
       "...                    ...     ...           ...          ...   \n",
       "2395  xenonpy.compositions  python      0.429642     2.204849   \n",
       "2396  xenonpy.compositions  python      0.569579     7.622173   \n",
       "2397  xenonpy.compositions  python      0.436152     2.635126   \n",
       "2398  xenonpy.compositions  python      0.383506     2.473203   \n",
       "2399  xenonpy.compositions  python      0.394862     2.490165   \n",
       "\n",
       "      meanSquareError  rootMeanSquareError        r2 pValue  spearmanCorr  \\\n",
       "0            0.418109             0.646613  0.226642   None      0.805147   \n",
       "1            1.641444             1.281188  0.330978   None      0.808188   \n",
       "2            3.087893             1.757240  0.173911   None      0.839800   \n",
       "3            2.238217             1.496067  0.241867   None      0.690957   \n",
       "4            2.174997             1.474787  0.275737   None      0.886405   \n",
       "...               ...                  ...       ...    ...           ...   \n",
       "2395         0.434043             0.658819  0.441885   None      0.808280   \n",
       "2396         1.656191             1.286931  0.215002   None      0.829544   \n",
       "2397         0.559099             0.747729  0.426260   None      0.834226   \n",
       "2398         0.339653             0.582797  0.599966   None      0.840016   \n",
       "2399         0.397413             0.630407  0.674495   None      0.800693   \n",
       "\n",
       "      pearsonCorr  \n",
       "0        0.631021  \n",
       "1        0.578646  \n",
       "2        0.439089  \n",
       "3        0.531137  \n",
       "4        0.558526  \n",
       "...           ...  \n",
       "2395     0.712245  \n",
       "2396     0.475225  \n",
       "2397     0.655400  \n",
       "2398     0.798442  \n",
       "2399     0.839631  \n",
       "\n",
       "[2400 rows x 18 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# --- query data\n",
    "\n",
    "mdl(modelset_has='inorganic', property_has='refractive')()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can see that only the models that belong to **All inorganic compounds in materials project** modelset were returned. If you call a query object without parameters, all queryable variables will be returned."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### list/get_detail variables\n",
    "\n",
    "You can check some meta info of the database. To do so, we use `mdl.list_*` and `mdl.get_*_detail` methods. For example, `mdl.list_properties` will return:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>fullName</th>\n",
       "      <th>symbol</th>\n",
       "      <th>unit</th>\n",
       "      <th>describe</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>inorganic.crystal.efermi</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>inorganic.crystal.refractive_index</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>inorganic.crystal.band_gap</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>inorganic.crystal.density</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>inorganic.crystal.total_magnetization</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>inorganic.crystal.dielectric_const_elec</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>inorganic.crystal.dielectric_const_total</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>inorganic.crystal.final_energy_per_atom</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>inorganic.crystal.formation_energy_per_atom</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>inorganic.crystal.volume</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>organic.polymer.band_gap_pbe</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>organic.polymer.ionization_energy</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>organic.polymer.electron_affinity</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>organic.polymer.atomization_energy</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>organic.polymer.cohesive_energy</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>organic.polymer.refractive_index</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>organic.polymer.density</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>organic.polymer.dielectric_constant</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>organic.polymer.volume_of_cell</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>organic.polymer.dielectric_constant_electronic</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>20</td>\n",
       "      <td>organic.polymer.dielectric_constant_ionic</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>21</td>\n",
       "      <td>organic.polymer.band_gap_hse06</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>22</td>\n",
       "      <td>organic.small_molecule</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                              name fullName symbol unit  \\\n",
       "0                         inorganic.crystal.efermi                        \n",
       "1               inorganic.crystal.refractive_index                        \n",
       "2                       inorganic.crystal.band_gap                        \n",
       "3                        inorganic.crystal.density                        \n",
       "4            inorganic.crystal.total_magnetization                        \n",
       "5          inorganic.crystal.dielectric_const_elec                        \n",
       "6         inorganic.crystal.dielectric_const_total                        \n",
       "7          inorganic.crystal.final_energy_per_atom                        \n",
       "8      inorganic.crystal.formation_energy_per_atom                        \n",
       "9                         inorganic.crystal.volume                        \n",
       "10                    organic.polymer.band_gap_pbe                        \n",
       "11               organic.polymer.ionization_energy                        \n",
       "12               organic.polymer.electron_affinity                        \n",
       "13              organic.polymer.atomization_energy                        \n",
       "14                 organic.polymer.cohesive_energy                        \n",
       "15                organic.polymer.refractive_index                        \n",
       "16                         organic.polymer.density                        \n",
       "17             organic.polymer.dielectric_constant                        \n",
       "18                  organic.polymer.volume_of_cell                        \n",
       "19  organic.polymer.dielectric_constant_electronic                        \n",
       "20       organic.polymer.dielectric_constant_ionic                        \n",
       "21                  organic.polymer.band_gap_hse06                        \n",
       "22                          organic.small_molecule                        \n",
       "\n",
       "   describe  \n",
       "0            \n",
       "1            \n",
       "2            \n",
       "3            \n",
       "4            \n",
       "5            \n",
       "6            \n",
       "7            \n",
       "8            \n",
       "9            \n",
       "10           \n",
       "11           \n",
       "12           \n",
       "13           \n",
       "14           \n",
       "15           \n",
       "16           \n",
       "17           \n",
       "18           \n",
       "19           \n",
       "20           \n",
       "21           \n",
       "22           "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mdl.list_properties()()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "and `mdl.get_property_detail` will return the property information including how many models are relevant to this property:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'name': 'inorganic.crystal.efermi',\n",
       " 'fullName': '',\n",
       " 'symbol': '',\n",
       " 'unit': '',\n",
       " 'describe': '',\n",
       " 'count': 2481}"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mdl.get_property_detail('inorganic.crystal.efermi')()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "These querying statements are very useful when you want to know what is in the database."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### get training info/env and download url by model ID\n",
    "\n",
    "Note that all models have their unique IDs. We can use model ID to get more information about a particular model. The following shows how to get training info/env by model ID."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>total_iters</th>\n",
       "      <th>i_epoch</th>\n",
       "      <th>i_batch</th>\n",
       "      <th>train_mse_loss</th>\n",
       "      <th>val_mae</th>\n",
       "      <th>val_mse</th>\n",
       "      <th>val_rmse</th>\n",
       "      <th>val_r2</th>\n",
       "      <th>val_pearsonr</th>\n",
       "      <th>val_spearmanr</th>\n",
       "      <th>val_p_value</th>\n",
       "      <th>val_max_ae</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>694</td>\n",
       "      <td>694</td>\n",
       "      <td>22</td>\n",
       "      <td>23</td>\n",
       "      <td>2.060905</td>\n",
       "      <td>1.098812</td>\n",
       "      <td>2.106717</td>\n",
       "      <td>1.451453</td>\n",
       "      <td>0.701376</td>\n",
       "      <td>0.850455</td>\n",
       "      <td>0.847006</td>\n",
       "      <td>0.0</td>\n",
       "      <td>12.112278</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>695</td>\n",
       "      <td>695</td>\n",
       "      <td>22</td>\n",
       "      <td>24</td>\n",
       "      <td>2.049812</td>\n",
       "      <td>1.162004</td>\n",
       "      <td>2.331702</td>\n",
       "      <td>1.526991</td>\n",
       "      <td>0.669485</td>\n",
       "      <td>0.844444</td>\n",
       "      <td>0.839916</td>\n",
       "      <td>0.0</td>\n",
       "      <td>12.192457</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>696</td>\n",
       "      <td>696</td>\n",
       "      <td>22</td>\n",
       "      <td>25</td>\n",
       "      <td>2.156136</td>\n",
       "      <td>1.092442</td>\n",
       "      <td>2.166551</td>\n",
       "      <td>1.471921</td>\n",
       "      <td>0.692895</td>\n",
       "      <td>0.837554</td>\n",
       "      <td>0.828305</td>\n",
       "      <td>0.0</td>\n",
       "      <td>12.244514</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     total_iters  i_epoch  i_batch  train_mse_loss   val_mae   val_mse  \\\n",
       "694          694       22       23        2.060905  1.098812  2.106717   \n",
       "695          695       22       24        2.049812  1.162004  2.331702   \n",
       "696          696       22       25        2.156136  1.092442  2.166551   \n",
       "\n",
       "     val_rmse    val_r2  val_pearsonr  val_spearmanr  val_p_value  val_max_ae  \n",
       "694  1.451453  0.701376      0.850455       0.847006          0.0   12.112278  \n",
       "695  1.526991  0.669485      0.844444       0.839916          0.0   12.192457  \n",
       "696  1.471921  0.692895      0.837554       0.828305          0.0   12.244514  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1a1f5ff050>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzkAAAGoCAYAAABltyvWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeZxcVZ3//9etrdd00gkhCSSBgHJFkR1BBUQWxYUZl8jgODiADCoO4vIdHdRBBBFRFmVcUGZkwJ84jqMO6ogy4oYsggqKLAUBEsgC2dPp9FJdVff3Ry1d3elO0nvfyuv5ePjo7lu3bp3OiT7y9nPO5wRRFCFJkiRJ9SIx1QOQJEmSpPFkyJEkSZJUVww5kiRJkuqKIUeSJElSXTHkSJIkSaorhhxJkiRJdcWQI0mSJKmupKZ6ADuxGWgA1kz1QCRJkiRNqQVALzBrZzcG0/ww0O4oihqLxWk9Ru1AIhHg/MWTcxdfzl28OX/x5dzFl3MXD4lEQBAEPUDTzu6d7pWcNUEQLOno6CKfL071WDRCqVSC9vYWnL/4ce7iy7mLN+cvvpy7+HLu4mP27BaSyWCXVni5J0eSJElSXTHkSJIkSaorhhxJkiRJdcWQI0mSJKmuGHIkSZIk1ZXp3l1NkiRJU6xYLFIo5Kd6GBOiWAzo6UmSy/VSKNhGeiolkykSifGpwRhyJEmSNKQoiujo2Eh3d+dUD2VCrV+foFi0ffR00NTUSlvbbIIgGNNzDDmSJEkaUiXgtLa2k8k0jPkfntNVMhlYxZliURSRy/XS2bkJgJkz54zpeYYcSZIkbadYLFQDTmtr21QPZ0KlUgkPAp0GMpkGADo7NzFjRvuYlq7ZeECSJEnbKRQKQP8/PKXJUPn7NtY9YIYcSZIkDatel6hpehqvv2+GHEmSJEl1xZAjSZIkqa4YciRJklTXnnvuOX7+85+N+v1//OPvOfbYI1mzZvU4jmr6+clPfsSxxx451cMYF9M+5BR6thHV6eFTkiRJmniXX/5Jfve7e0b9/pe+9BBuvfWn7LnnvHEclSbStA85xe5Ock/eN9XDkCRJUkxF0djOwEmn08yZswfJZHKcRqSJFotzcoobV5Hcb6pHIUmSpCiKyPVNzZkymXRixN23/vEfz+PBB//Igw/+kQce+AMAxx9/Avfddy8bN27k05++kgMPPJAvf/k67r77t2zYsJ6ZM2dx/PEncMEFH6ShoZE//vH3vP/97+G73/0hCxbsxdKlp/GmN72VRx99mPvuu5dMJsNrX/t6zj//QlKpXfvn9dKlp3HGGe/ggQf+wL333k1b20zOOec8lizZj6uv/izPPLOCAw4I+cQnLmXvvRcCcNttP+Zb37qZ1atX0tY2k1e/+mTe+94LyGQyADz00J+4/vov8eijjzBr1ixe+crjec973kdLS+uI/swqent7uPnmG7n99p+yYcM69tlnX84++zyOP/4EoNRm/Gtf+zI///nP2LRpIwsW7MXpp7+dN71pKQCbNm3k6quv5IEHfk93dw9hGHLeee/jsMOOGNV4RiIWIaew5XnSUz0ISZKk3VwURVzx//2RZau2TMnnv2DhTC56x+EjCjqf+czn+chHPsiee87jgx/8CP/wD+/kf/7ne1x55bXMmDGD/fZ7AZ/85EU8//xzXHbZlcyePZu//OXPXHHFpSxevC+nn/72IZ/7jW98nfe+9/285z0XcN999/CFL1zFAQe8iFNPfcMuj+3667/E+9//Yc4//0JuueVmrrrqCvbddz8uvPDDNDc38y//chFf/ep1fPrTn2PZsif43Ocu5+KLL+PAAw9ixYqnueSSjzNz5kzOOutcli17ggsvPJ93vvNs/vmf/4WNGzfy5S9/gQ9+8B/52tduHFVr5ksu+TjZ7GN86EMfZfHifbjjjtv5+Mf/iSuuuIpjj30VP/jBd/nlL+/gU5/6DHPn7sldd/2Gq676LEuWvIBDDjmUq666glwux7/+69fJZDLcfPM3uOiiD/ODH9xGU1PTiMczEmMKOWEYfgI4OZvNnjDM6zcAp2Sz2X3H8jnFLc+N5e2SJEkaLzE7NqetbSapVIqGhgba29sBOOaYV3LUUUdX73nZy47moIMO5YUvPACABQv24vvf/y+efPKJYZ979NEv521vOwOARYsW8+Mf38qf//zgiELOMce8gr/6qzcDsHTpGdx66/dZuvRvOPzw0ub/E088mTvv/BUAq1evIggCFizYm/nz5zN//nyuvfZLNDe3APDtb9/MkUcexVlnnVsd0yWXXM7pp/81Dzzwh+ozd9Xy5U9z552/5sorr+WVrzwOgLPP/geWLXucm276Bsce+ypWrVpFU1Mje+21N3Pm7MFb3/o3LF68L4sX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0nQ37UPO1m05tkWlg4BaE71TPBpJkiRJ0920DzkAncVSyGnP5KZ4JJIkSZKmu3iEnKgRgNmZvikeiSRJknYnS5eexr//+9emehgaoViEnMpytbaklRxJkiRJOzbtDwMF2FZerpYp2kJakiRpKkVRBPkp+j+eUxnPTNQuiUXI6YlK3dXSRRsPSJIkTZUoiuj64eUUn182JZ+fnPdCmv7qYyMKOpdffgnLlz/NDTfcVL22du3zLF16Gtdc8yWef/45vve977B8+XISiYAXvejFXHDBhwjDF41qjEuXnsYZZ7yDBx74A/feezdtbTM555zzWLJkP66++rM888wKDjgg5BOfuJS9914IwG23/ZhvfetmVq9eSVvbTF796pN573svIJMp/Rv4oYf+xPXXf4lHH32EWbNm8cpXHs973vM+WlpaRzXG3UEslqt1l0NOJjLkSJIkTaWAeFVSXve6N/Loow+zcuWz1Wu3334be+wxl87OrVx11RWcccY7uOWW/+aLX7ye3t5ePvvZS8f0mddf/yWOPvoV3Hzzd3jFK47lqquu4POfv4ILLvgQX/7yDaxfv4GvfvU6AJYte4LPfe5y3vWu87jllu9z0UUX89Of/i+33HJz9fULLzyfo446mptu+jaf/OTlZLOP8sEP/mOpqqYhTftKTltLhu4oDUAG9+RIkiRNlSAIaPqrj8Vqudphhx3BXnvtze2338Y555wHlELOqae+gVmz2vnoRz/B61//RvL5IvPnL+C0097EVVddMaZhHnPMK/irv3ozAEuXnsGtt36fpUv/hsMPPxKAE088mTvv/BUAq1evIggCFizYm/nz5zN//nyuvfZLNDe3APDtb9/MkUcexVlnnQvAokWLueSSyzn99L/mgQf+UH2mBpr2Iae5Mc15S4+En/2SBnIUixGJRLz+HwRJkqR6EQQBpBumehi7LAgCTj31Ddx++08555zzeOKJLE899SSf/vTnWLx4H5Yvf5pvfOPfeOaZFTzzzAqWLXucYrE4ps9ctGif6veNjaUuwXvttXf1WiaTIZcrBcWjj345Bx10MOeeeyYLFy7mqKOO5rjjXkUYHghANptl5cpnOOWU47b7nBUrlhtyhjHtQw5AY8sMeoDmIEdvX4GmhlgMW5IkSdPA619/GjfeeAOPPvowd9zxf7z0pQezePE+/PznP+Oyyy7mta99HQce+BLe+Ma/5qmnnuSaa64c0+elUtv/W3W4ClRDQwPXXXc9jz/+GL/73b3cf/+93Hrr9zj11DfwsY99kigq8prXvI53vvOc7d47a1b7mMZZz2KxJydTLtc1BjlyfYUpHo0kSZLiZP78BRx22BH88pc/5xe/+D9OPfWNAHzzmzdy2mlv4uKLL+Wtbz2dQw89nFWrVgJM2n6Xe+65ixtvvIEDDngRZ555Ftdddz3vete7ueOO2wFYsmR/nn76SRYuXFT9T7FY4LrrrmHt2ucmZYxxFIuSSKKhFHLSQZHunh5ojU+JVJIkSVPv9a8/jWuu+Rz5fJ6TTnoNAHvuOY+HHvoTjz32KE1NLfz2t7/m+9//LwByuRwNDRP/b85UKsmNN95Ac3Mzxx13Ah0dW7jrrjs56KBDADjjjL/jfe87l89//jMsXXoGXV1dXH31Z+nq6mLhwsUTPr64ikUlh0wjxXKY7t3WObVjkSRJUuyccMJJABx33KtobS21Xv7gBz9Ce/tszj//HzjvvL/n7rt/yyc+8SkAHnnkL5MyrqOOOoZ//ud/4cc/vpUzzzydD3/4gmpzAYCDDnop11zzJZ56ahnveteZfOQjF7L33gv5whe+Um0xre0F07z13FPAkk2btrHmy+fSGORYf/zHWfKiF071uLQLUqkE7e0tbNq0jXx+bBv4NLmcu/hy7uLN+Yuvepy7vr4cGzasYc6cBaTT9f2P6VQqUTfzFnc7+ns3e3YLyWTiaWC/nT0nHpUcoDco/ZL5His5kiRJkoYXiz05AH1BA0SdFHq6pnookiRJ2s1cc82V3Hbbj3d4z2WXXckxx7xikkakHYlPyEk0QAEKPdumeiiSJEnazZx99nmcfvrf7vCePfaYO0mj0c7EJuTkE41QgGLOSo4kSZImV3t7O+3tnksTF7HZk5NPlU6LJdc9tQORJEnajUzzJlWqM+P19y02IaeYrIQcKzmSJEkTLZlMApDL9U7xSLQ7qfx9SybHtuAsNsvVonIlJ+jrmeKRSJIk1b9EIklTUyudnZsAyGQaCIJgikc1MYrFgELBitVUiqKIXK6Xzs5NNDW1kkiMrRYTm5BTTDcDkMi7XE2SJGkytLXNBqgGnXqVSCQoFj0nZzpoamqt/r0bi9iEnCDTBECiYCVHkiRpMgRBwMyZc5gxo51CIT/Vw5kQyWTAzJnNbNnSZTVniiWTqTFXcCpiFHJKlZykIUeSJGlSJRIJEonMzm+MoVQqQWNjI93dBfJ5qzn1IjaNB4KGUiUnXXDzmyRJkqThxSbkJBpKlZx0ZMiRJEmSNLzYhJx0UysAGUOOJEmSpB2ITchJNZYqORlyHkolSZIkaVjxCTnNpUpOggg8K0eSJEnSMGITchoaGslHpeFGua4pHo0kSZKk6So2IaexIUVPlAYgynkgqCRJkqShxSbkZNJJuqNSf/ZCz7YpHo0kSZKk6So2IaehJuT0dRlyJEmSJA0tNiEnlQzoqYScbkOOJEmSpKHFJuQEQUAuKIWcfE/nFI9GkiRJ0nQVm5ADkAsaACj02F1NkiRJ0tBiFXL6EqWQU+w15EiSJEkaWqxCTiHZCEBkyJEkSZI0jFiFnHwl5HgYqCRJkqRhxCrkFFOlkEOfh4FKkiRJGlpqLG8Ow/ATwMnZbPaEmmunARcDBwLrge8CF2ez2TEnkyjVBEDCkCNJkiRpGKOu5IRh+AHg0kHXjgN+AHwPOBR4D/A3wFfGMMaqKF0KOUG+ZzweJ0mSJKkOjbiSE4bh3sC/AccB2UEvvxv4RTab/Wz552VhGH4MuDEMw/dks9nesQw2yDQDkCwYciRJkiQNbTTL1Q4HNgEHU1qWtm/Na1cDxWE+ZwYwtpDTUAo5KUOOJEmSpGGMOORks9kfAT8CCMNw8GsP1P4chmEG+DDwx2w2u360g0wmS6vqko3lkBP1kQyKBMkxbSnSBKvOWzJW/S2Ecxdnzl28OX/x5dzFl3NXnyYsJYRhmAK+CbwYOH4sz2prK+3FmdE+q3ptZnOCZHPLWB6rSVKZP8WPcxdfzl28OX/x5dzFl3NXXyYk5IRhOAP4L+DVwNJsNvu7sTyvo6ObQqFIMQrojVI0BHk2rV1PcqaJezpLJhO0tTVV50/x4dzFl3MXb85ffDl38eXcxUdbW9MuV9zGPeSEYbgAuA1YArwum83+cqzPLBSK5PNFUomA7ihNQ5An391J1LLHmMeriVeZP8WPcxdfzl28OX/x5dzFl3NXX8a1FBKGYTvwC2AucOx4BJxaDekk3cUMAFHOs3IkSZIkbW+8KznXAvsBpwLrwjCcX/Paumw2WxjLwxszSXqiSsjpGsujJEmSJNWpcQs5YRgmKB38maFUzRlsCbB8LJ/R1JBifZQu/dBryJEkSZK0vTGFnGw2e1bN90VgQttStDSleTZyuZokSZKk4cWqPVlzY6q6XK3Yu22KRyNJkiRpOopVyGlpTNFdXq7W123IkSRJkrS9WIWcZCJBX6IRgLwhR5IkSdIQYhVyAKJUKeQUemw8IEmSJGl78Qs56VJvg6ItpCVJkiQNIXYhJ2hoLn1jyJEkSZI0hNiGnKCvZ4pHIkmSJGk6il3ISTW0AJDIe06OJEmSpO3FLuSkm0qVnFShhyiKpng0kiRJkqab+IWc5lYAEhSh0DfFo5EkSZI03cQu5DS2tFCMAgAimw9IkiRJGiR2IaelKUN3lAYMOZIkSZK2F7+Q05iiJ8qUfsjZfECSJEnSQDEMOen+Sk6vlRxJkiRJA8Uu5Myd1UQPpUrOunUbp3g0kiRJkqab2IWc5sYUDeUOa0+teH6KRyNJkiRpuoldyAGYNXsWAKtXr6PoWTmSJEmSasQz5LSXQk6Q76E3V5ji0UiSJEmaTmIZchKNzQA0BTn6CsUpHo0kSZKk6SSeIaehEnL6yOcNOZIkSZL6xTLkkCmFnMYgR77onhxJkiRJ/WIZcoJM/3I1KzmSJEmSasU05DQB5eVq7smRJEmSVCOmIaemklNwuZokSZKkfrEOOY1BzkqOJEmSpAFiGXIoL1drDPrI5/NTPBhJkiRJ00ksQ05lT04igEKuZ4pHI0mSJGk6iWXIIZmmshOn2Jeb0qFIkiRJml5iGXKCICBPGoBiX+8Uj0aSJEnSdBLLkAOQD1KAIUeSJEnSQDEOOaVKTuRyNUmSJEk1YhtyCtVKjo0HJEmSJPWLccgpVXLIW8mRJEmS1C+2IaeYyAAQ5d2TI0mSJKlfbENOIVGp5PRN7UAkSZIkTSuxDTlRJeQUXK4mSZIkqV9sQ04xWQo5gXtyJEmSJNWIbciJkqU9OVZyJEmSJNWKb8gpL1dLFA05kiRJkvrFNuSQKlVygoKNByRJkiT1i23IqSxXSxQNOZIkSZL6xTbkBNWQ43I1SZIkSf1iG3KidAMASSs5kiRJkmrENuQEqVLIcbmaJEmSpFqpsbw5DMNPACdns9kTaq4dCnwROBLYAFyXzWavGsvnDCVIl5arJaP8eD9akiRJUoyNupIThuEHgEsHXZsD/B/wOKWQ80ngsjAMzx7LIIeSKO/JSUVWciRJkiT1G3ElJwzDvYF/A44DsoNePg/oBd6bzWbzwKNhGL4Q+Chw4xjHOkCQKS1XM+RIkiRJqjWa5WqHA5uAg4GLgX1rXjsO+E054FT8ArgoDMM9s9ns2tEMMpncvuCUbmgEIEWeVCq2W4vqWmXehpo/TW/OXXw5d/Hm/MWXcxdfzl19GnHIyWazPwJ+BBCG4eCXFwIPDbq2uvx1MTCqkNPW1rTdtRntbUAp5LS3t4zmsZokQ82f4sG5iy/nLt6cv/hy7uLLuasvY2o8MIRmSsvVavWUvzaO9qEdHd0UCsWBD80FNADpqI9Nm7aN9tGaQMlkgra2piHnT9Obcxdfzl28OX/x5dzFl3MXH21tTbtccRvvkNMNNAy6Vgk3o04ihUKRfH7QX7pUqfFAOijQ15cnCCwxTldDzp9iwbmLL+cu3py/+HLu4su5qy/jnQyeBfYadK3y86rx/KBkpiZLFWw+IEmSJKlkvEPOb4DjwjBM1lw7CciOtunAcFI1ISfqG7xCTpIkSdLuarxDzjeANuDfwzB8cRiGZwEfAK4Y588hlUqRi8pZKp8b78dLkiRJiqlxDTnlas1rgRD4I6XDQP8pm83eNJ6fA5BOJegrh5xizkqOJEmSpJIxNR7IZrNnDXHtfuDlY3nurkgmAvpIATnyud4xd1DofeDHkOui4ejTx2N4kiRJkqbIeHdXmzS1lZzCGPfkRFFE7v7/Lj33Ra8iMXPemMcnSZIkaWrEtu9yMhH0h5yxLleLCv3f9nWP7VmSJEmSplRsQ04QVJarQaFvjI0HijU90Qv5sT1LkiRJ0pSKbcgByAelkFMcawvpYk0lp+Z7SZIkSfET65ATlUNO17YxLjGrDTaGHEmSJCnWYh1yUg2NAGzavHVMz4kil6tJkiRJ9SLWIaehqRRytnRsG9uDaperFTxYVJIkSYqzWIec5uYmALZuHb+QQ96QI0mSJMVZrENOS2sLAD1d3eQLxZ3cvQM1y9UiQ44kSZIUa7EOOU3lSk4yyrN6/eirOVGxZh+OIUeSJEmKtViHnCCVASAT5HnoqQ2jf1DRSo4kSZJUL2IdckilAUgHBe5/bO3onzNgT84Yz9yRJEmSNKViHXKCZKmSkw4KPPN8J2s3dY3uQQO6q/WNx9AkSZIkTZFYhxzKy9XamwIAss9uHt1zas/JcbmaJEmSFGuxDjlBsrRcrTFZCik9vYUd3T6sqLaS43I1SZIkKdZiHXIqlZw0pZDS2ze6kDNwT47L1SRJkqQ4i3XICcqNB1KUWkCPOuQMOCfHSo4kSZIUZ7EOOZQbD1RCTk9uPCo57smRJEmS4izWIadyTk4yGlslJ7K7miRJklQ3Yh1yKDceqIaccankuFxNkiRJirNYh5zxquQM3JPjcjVJkiQpzmIdcird1YJiaYnZ+FRyXK4mSZIkxVm8Q055uVoiKhBQpGccWkjbXU2SJEmKt1iHnMpyNSidlTPaSk5Us1zN7mqSJElSvMU65FRaSAOkg8L4HAZa6BsYeiRJkiTFSqxDTpBIQCIJlEPOeOzJAbCNtCRJkhRbsQ45QOw7u58AACAASURBVLWak2acKjnYYU2SJEmKs9iHnCBVaj6QDvIUihH5wsiXmkXFQe8x5EiSJEmxFfuQU2kjnaZUjekZzZK1aNB7DDmSJElSbMU+5ATl5WqNyVJQyY1myZrL1SRJkqS6EfuQQ7oBgJZUBIyykmPjAUmSJKluxD7kBKlyyEmXgsqomg8MahkdGXIkSZKk2Ip9yKlUcprLy9VG00Y6spIjSZIk1Y3Yh5wg3QT0h5ye8diTU8iPeVySJEmSpkYdhJxSJacpWQomo2s8MKiFtCFHkiRJiq3YhxzSjQA0BqVgYuMBSZIkafcW+5BTqeQ0JkohZzR7cgafk2PjAUmSJCm+Yh9ySJUqOQ2VSs4olqtFLleTJEmS6kbsQ06lklMJOd29owgoLleTJEmS6kYdhJxyJYdSMNnWPYqA4nI1SZIkqW7EPuRUGg+kyyGnq2c0lZzycrUgWfpqyJEkSZJiK/Yhp7JcLR2VKzk9Iw8oUbEcjMrP8pwcSZIkKb7qIOSUKjnJKAdAZ/coAkpUHPAsioYcSZIkKa5S4/3AMAzTwCXAmUA78CDw0Ww2e/d4fxZQrb4kC6WQM5pKTmW5WpBuIALIu1xNkiRJiquJqOR8AjgHOBc4DHgMuC0Mw70m4LMIyi2kg0IvMNqQU67cpMrL1YqGHEmSJCmuJiLk/DVwSzabvT2bzS4DPgy0AS+fgM+CTCXk5Agokusr0pcv7uRNg9RUcgDPyZEkSZJibCJCzgbgjWEY7huGYRI4D+iltGxt3AXl6gtAA6Vw0jXCak5UaSFd2ZNjdzVJkiQptsZ9Tw5wIfAd4GmgABSBpdls9snRPjCZHD6LRckGCBIQFZnVBM91Q09fgTmpXc9vQbnxQCLdQAGgmCc1gvdraJV529H8aXpy7uLLuYs35y++nLv4cu7q00SEnAOBTcCbgFXAPwA3h2F4fDab/fNoHtjW1rTD1zsyjRR7u5jdHPBcNwSpFO3tLbv8/G1BRAFobG2lD0gFxRG9Xzu2s/nT9OXcxZdzF2/OX3w5d/Hl3NWXcQ05YRjuA3wLOCmbzd5Zvvz7MAxfDHwKePNontvR0U2hMPw+myjVAL1dzEgXgDT//OXfcs4bDuSEw/bepefn+0rL3HLF0h9HX28vmzZtG81QVSOZTNDW1rTT+dP049zFl3MXb85ffDl38eXcxUdbW9MuV9zGu5LzMiAN3D/o+r3A60f70EKhSH4HzQSCVKn184x0/z3f+N9HOfalC3bp+ZXDQKNkpvQ137fDz9PI7Gz+NH05d/Hl3MWb8xdfzl18OXf1ZbwXHz5b/nrwoOsvBZ4Y58/qV24YMCMTDbjcsS23a+8vd1ej2l3NxgOSJElSXI13Jec+4E7gpjAMzwdWAu8ETgaOHefPqgrKISfK9QD9e2meWLmZI8I9d/6AYmHgc2whLUmSJMXWuFZystlskdI5Ob8A/gP4A3AipT06947nZw1QDifJQveAy48/u2XX3l8OOaRKy9Ws5EiSJEnxNe7d1bLZ7CbgfeX/TIpEUxsF4Kglzdyba2HxvBnc8/BzLFu1iyEnqhwG6jk5kiRJUtzVRUPwoKkNgLZEN5edezQnHbEQgI5tvbv0/qi6XK20J8flapIkSVJ81VXIibo7AGhqSALQ1VvYtQdUl6vZeECSJEmKu7oMOc0NpVV4Pb15oiga9n1V0cDGAxR38X2SJEmSpp36CDnNMwGIukp7cBrLIScCenK7UM0Z3EIaoOiSNUmSJCmO6iPklCs5xXIlJ5NKkEwEAHT37jisRFHU33gg1dj/gkvWJEmSpFiqi5CTaCpVcsh1ERX6CIKAxkxpX073zio5Uf/rQaWFNDYfkCRJkuKqLkIODc0QlEJNf/OB0pK1nVVyqkvVAJIpSJS7alvJkSRJkmKpLkJOECQImmYA2zcf2HnIqan0BAlIpkvfG3IkSZKkWKqLkAMQlJesVUJO42hCTiJJkCw3LXC5miRJkhRLdRRyRlfJiaKa5WpWciRJkqTYq6OQU6rkFMttpCsHgnbv7EDQSiUnSBIEQTXkWMmRJEmS4qluQk6idTYAUecGYATL1SoVm2QpFFWWq1nJkSRJkuKpbkJOMGMPAIqd64ERLFfLl8JMkCofBOpyNUmSJCnW6ibkJGbMBSDqWAeMoIV0IVf6Wg43QWW5Wj43AaOUJEmSNNHqKOT0V3KiqEjTLh4GWg0zlYNAM02lr309EzJOSZIkSROrbkJO0DobggAKeaKuLSOo5FSWq5UrOelGACJDjiRJkhRL9RNyEimCllLzgeLW9dXGA1073ZPTW/omWarkBOVKTpTrnqCRSpIkSZpIdRNyoH/JWrR1XbXxQM/OKjnVxgPl5WqVSo4hR5IkSYqlugo5Qbn5QHHr+l1frpYf1HiguifHkCNJkiTFUV2FnP5KznraZzSQCAI6uvpY8dzWYd8TlburVSo5QbqyXM09OZIkSVIc1VXICZpnAVDs3kJrU5qXHbgnAD+5d8XwbyovV+vvrlZpPDC2Sk6UzxHlusb0DEmSJEkjV18hp6kNgKi7A4DXHbMPAL/PrmVbz9CHe1YrOYMaD4y1hfS2//wInf9xvnt7JEmSpElWVyEnMSjkLNqzlT1mNhJF8MxwS9aqlZxKC+mxd1eLooioazMAhQ3PjPo5kiRJkkaurkJObSUniiIA9pk3A4AVz3cO+Z7KYaDVPTk1LaSLnRvovv1fya/JjmwglWYGQJBIjuy9kiRJksakzkLOzNI3hb7qcrPF81oBeGbtcJWcSne1Sgvp/uVqPb/+d/LL/0D3j64Y0TgG7OcJ6uqPWJIkSZr26upf4EG6AVINQP+StcXlSs4zw1Vyqt3VKi2k+8/JKax9anQDqe3MViyM7hmSJEmSRiU11QMYb0FTG9HWdRS7O0jMnFcNOWs2bKO3r0BDetDysUGVnKB8GCjFfOk/IxBFRXrv/Q6Ul8oBRCN8hiRJkqSxqatKDtTuy9kCwKzWDDOa00QRPLdh+5bOUWFg44HqcrVRyK94kL6HfkbfX27vv1gYuqubJEmSpIlRdyFncIe1IAjYY2YpuKzfMkRb6MGNBxKJ6pK3kSpuXrPdtahgJUeSJEmaTHUXcgaflQMwZ2ZpCdqGju1DTn8lJ9P/jMz21ZyopmPacKKeIfb9GHIkSZKkSbVbhJw92sohZ0eVnGRNyKnsy6kR5bZf6rbdPV2btr/ocjVJkiRpUtVhyCm1kY66tlSv7bCSU6nQ1FRyGKqS07Ntp59d7Fi7/ftsPCBJkiRNqvoLOS2zACjWVFXm7FIlJ93/jNrAUxb1Dt2CesA9W7YPOVZyJEmSpMlVdyEnMWMPAKKt66vXKpWc9s5ldP30WorbapaVDbEnZ6jGAzsLOVHvtqHvcU+OJEmSNKnqL+S0lkNOd0d1KVqlknN2w88oPPMnen97c/X+aFB3NYB0eByJ2YtoPOUfSS46uHSxvFwt9/Ad9P7++9t97lBL1cDuapIkSdJkq7vDQGlogXQj9PVQ7FxPctZeNDemaGro/1UL61cAEEURFCqHgfYvV0vvdxTp/Y4CIP/0H0r39nYS5XvpveubpXsOOJZE257V9xS3bRx6PC5XkyRJkiZV3VVygiAYeslaW/8StKivu/RNsQBRVHrfEPtwAILG1tJ7erdR3LS6/xm57oE39g7Tfc3GA5IkSdKkqruQAxCUl6wVa0LOzIao/4a+noFVHBi4J6f2WQ3lkNOzjeLGldXrg1tKD9di2uVqkiRJ0uSqv+VqlJoPFBhYyWlP1lReooioe0vNOwJIDP1HETS0lN7S20mhNuQMOvhzu8pOhcvVJEmSpElVl5WcynK12krOrOTASktx0+pq+2hSaYIgGPJZQWM55PR07qSSUwo5QcvsgQ+wkiNJkiRNqroMOcEQIWcmAysvxc2rifKlKkuQHHqpGkCQKYecXDfFTav6X+gdeDhoVN6TUwlY1etWciRJkqRJVZchJzFrAQDFTSuJigUAZjAwlBQ3PNu/J2eY/TgAQaapdH/neqKuzdXr0eBGA+XKTtA2d+B1Gw9IkiRJk6p+Q066CfK5avWlJSpVcjrSpRBSWLecqFyNqQSZITU0l75uV7kZ9HM55CRcriZJkiRNqQkJOWEYvjMMw0fCMOwJw/DhMAzfNhGfM5wgSJDccwkAhbVPAdBS2ArAqqYXAlDcuLIagIIZc4d4SvlZmeYhr28fckp7cmrPzgGXq0mSJEmTbdxDThiGfwd8A/gacBDwn8B/hmH48vH+rB1Jzt0PgNyfbqP3vu8yp/MJAFalFhM0zoCoQH75H4Htg0mtYUNOroson6v5udx4YOY8Gk8+n9QLjim9UF4uJ0mSJGlyjGvICcMwAC4Drs1ms1/MZrPLstnsZcDPgRPG87N2Jrnn/gBEHc+Te/B/AXgot5BnowUk5parPGuyACQG76OplcpAkNzucmHlX+i86X0UNpabEVT25GSaSO/3MlJLjip9vpUcSZIkaVKNdyUnBPYFbqm9mM1mX5vNZq8Y58/aoeT8F5YqNskMiT33Z2t7yLe2HUtvvkhy7r4D7t1hJScICBr6qzlB08z+Fwt99D36C6Ioqu7JqVR+gmT53B335EiSJEmTarwPAz2g/LUlDMOfAYcBTwOfzmazPxrtQ5PJUWSx1jba/vZzBIkEQaaJJx9fR/eTfyKXL5BZ9GJyf/xh9dZ0+zySqeE/I8g0EfWU9vQkZu5JoeYg0WRLOyny1WVp6eZWglSCKFPu2FbMk9rBs+tZZd5GNX+aUs5dfDl38eb8xZdzF1/OXX0a75DTVv56M/Ap4KPAW4FbwzA8JZvN3jGqh7btoPvZDrVUv9ujvVRp6StEzD3wMDpv7b9r9uJ9SOygjfS25hnkOtYC0DR3Lzqfe6L6WnNLA61NAaXm0gHte84mCBL0dM6gE0hSoL29ZajH7jZGP3+aas5dfDl38eb8xZdzF1/OXX0Z75BT2Yn/+Ww2e1P5+wfDMDwc+BAwqpDT0dFNoVAc08D6cqW9MV3dfWzu6CVoaSfatgmALVv7gOH3zhSTDdXv840DW0R3bekgv6506GjQ0MTmzaUGBPltpWVqhVyOTZsGdmLbXSSTCdramsZl/jS5nLv4cu7izfmLL+cuvpy7+Ghra9rlitt4h5yV5a8PDbr+MPDG0T60UCiSz4/tL10yEQDQkyuQzxdJv+Qkcvf9N8GMuTt/dro/2UeNMwe8VOjtIt/VWb2v8qwCpWYFUaFvzGOPu/GYP00N5y6+nLt4c/7iy7mLL+euvox3yHkA2AocA/y25vpLgWXj/Fkj0pguhY7evtLemcwhrydonEFqwYt2+t4BjQcaBraUjvp6+ttH195XbjwQ2XhAkiRJmlTjGnKy2Wx3GIafAy4Ow3AVcB9wBvAa4KTx/KyRasiUQk5fvkixGJFIJMi86FW79uaas3KCTAvpl5xE38PllXe5mpBTe6aO3dUkSZKkKTHubSSy2eyngUuAy4FHgLcBb8lms78a788aiYZ0/1k3lWrOrqoNL0FjC42vPJPGV58HVCo5paYGtcvaSKZLX4uekyNJkiRNpvFergZANpu9BrhmIp49WulUgiCAKCqFnKaGXf/VByxDy5Q6pQXlQBPluqsNDBLN/ft1gkT5+VFEVCwQJLY/UFSSJEnS+NttGoIHQVCt5vTmRlrJ6a/QVANPprH0ta+HaNvG0mutNZ3XKpUccMmaJEmSNIl2m5AD/ftyRrpcrbonJwigHHiqlZy+HoqdpZCTaKkNOTWVooJL1iRJkqTJsnuFnHIl59EVmygWo11+X7WSk2kmCEp/ZEG6VMkpLVerVHLm1LwpAZTaVkdFKzmSJEnSZNmtQk6ljfR3frGMO/64ctj7nnl+K7f83+Ns7SqdbZpo3xtSGZJzl/TfVLNcrdi5oXRfTSUnCIKaDmtWciRJkqTJMiGNB6arYtRfvfnBb57ilCMXDXnfJTfeD0BPX4FzXn8giaY2Wt9xLZSrN9C/XA0iyJfCUNDaPvBByVQp4LgnR5IkSZo0u1UlZ+W6bdXvi8WIfGHHp9quWtdZ/T5oaBnYIS2VKe3RqWhoIUg1DHh/UG4+4IGgkiRJ0uTZrULOyUcurH6fyxd537W/4a6H1gx7f/MO2kwHQTCgspOo7axWvVh6f3Hz8J8hSZIkaXztViHnra/an0vOPoqD9y81COjLF/nvXz854J7u3v6qS1Njmh0Jag7/DFqGCDmp0vt77vgKheeXjXbYkiRJkkZgtwo5Dekki+fN4NAX7FG9tqUzN6Cl9IaOnur3Uc0enj8/uYE1G/qXuwEEmdpKzhwGS4fHV78vblo9tsFLkiRJ2iW7VcipOO6QBXzo9EOqLaVXru3fe7NhS3/I6SlXdZ5a3cEXvvsnPn7D7wY+qGa5WnL+Adt9TsOhbyC131EAROXmBJIkSZIm1m4ZcpKJBAftN4cDFs0CYMXzW6uv1VZyunpLFZ4nV28Z8jnRtk3V71OLDxn6w1KZ0teCIUeSJEmaDLtlyKnYZ34rAMuf6w8562sqOZ3dOR54Yh3buvvPuSkU+zuy1Yac6oGhgwTJUsixkiNJkiRNjt075MybAcCylVuq+29ql6ut29zDv37vIX541/Lqta6e/sYEDUefDkDjyecP/yGVSo4hR5IkSZoUu3XICRe305BO8tzGLh5cth6ANRu6dvie2pCTPvh1tL7zS6T3e9mw9wepSiWnl+LmNWz770/Q9/hd4zB6SZIkSUPZrUNOa1O6enbOj+5aztauHCtrDgAdyraakBMEAUFj644/pHJAaD5H121XU9y4kp5f3TCmcUuSJEka3m4dcgBOPLwUcpY/t5WHn94IwII5zcPe39XTN+xrQ6lWcnLdRFvXj3KUkiRJknbVbh9yZrVmSCUDAO595HkAXrJkNpn00H80tZWcXVIOOfkVD1QvBQ07qf5IkiRJGrXdPuQEQcDMltKSsj8/uQGAA/dpp6khNeT9o63kUOw/cDTKbSOKisO8Q5IkSdJY7PYhB2DWjMyAn/eZN4NkIhjy3tpKzjPPb+WbP8uyZdsOOqdV9uTUiiLyy+6lsPFZeu6+ha7//RxRcYQVIkmSJElDGrpcsZuZ1dIfRFLJgFkzGujNFYa8t7a72qduvJ8IyOULvOsNLx7y/iCVHvJ6zy+/PuDnwsqHhz9QVJIkSdIus5IDzGrtDzlzZjaRCAJ6+4ZeTratvFwtiiKi8rWVa7cN//ChKjlDiHLdu3SfJEmSpB0z5AAzW/uXq82d1QhAvjB0yKlUctZu6g8lrU3DF8Sqe3J2xsNCJUmSpHFhyGFgJWfurKYd3lup5CxbtaV6bcu2HTQjGBxy0o1D3lbs2fH5PJIkSZJ2jSGHgY0H5s4shZzDXrjHkPdWKjlP1oScjR09wz57cCUn0TZvyPui7i1DXpckSZI0MoYcBjYeqFRyzn79gbzztSEfO/MIUsmAJQvagP7uaivX9+/D6erN0907THe0QXtyEjMNOZIkSdJEMuQAs2b0B5H28vetTWlOOGxvXrD3TP71wuP5h9NK3dO6ektL0zq7Bi5R27i1d8hnD67kBA0tQ94XdXeMbvCSJEmSBjDkAC2NKZrLh3/utUfzdq83ZJLMaC61gu7uLdDdm6/uzamcpjPskrXkoJCTGXrPT9RlJUeSJEkaD56TAwRBwJXvfTmFQkRjZug/kpbGNLNaM2zuzPHs2k62dZeWpy2eN4MVz29lwzAhJ0gMzJHpg08l/8yDFDetHnDdSo4kSZI0PqzklLU0pmlr2XG758XzZgDw+LObKUalU3IWzWsFdtx8oFaiqY2Wt32G9IEnDLge9XQSFYfZ1yNJkiRplxlyRmDRnqVA8+iKTQBk0gnmtZeWn23eOrJzboLM4GVxEVH31jGPUZIkSdrdGXJGoBJyHiuHnNamdPWMnc2dpcYDURTx9R8+zE0/fWzHDxuiAYFL1iRJkqSxM+SMQCXkROWfWxvTzGwtLXGrhJxNW3u595Hn+fWDq6tn6gxl+0oO9D32Gzq//f/IP/dE6XPyObp+chU9d98yjr+FJEmSVN8MOSMwr72ZTKr/j6xlQCWntFyttpX0pq07OCR0iEpO3yN3EG1dT/dt15R+zt5JYeVf6PvL7eMyfkmSJGl3YMgZgUQiYP7s/gpMbcjp7O6jL19k84CQM/TZOQBBQ00lZ1Cbafq6Acg/+1D1UlQsjGXokiRJ0m7DkDNC8+f0h5PWpjQtjSlSydIf45bO3gGVnO0OCA2S/d/WLFdLtM7e7nOiYoHCmpp9PX271r1NkiRJ2t0ZckaotpLT2pQiCAJmVffl5AYsUduurXSiJuTUVHKC1jnbfU5x/YoBwSYy5EiSJEm7xJAzQrWVnJbGNACzZpSWrK1a38n6Lf1hpLpcLVm6L7nnfv0PqtmTkxgq5GzbNODnKGfIkSRJknZFaqoHEDcLZveHk9amcsgp78u56afZAfdWQk7zmy6m7+GfkzniTdXXgoZWknsdCEFAMMRyteKWNQMvlPfpSJIkSdoxQ84I1S5Xq5jVkhnizv6Qk5yziOTxZw94LQgCmt7wEYAhu6cVN64a8HPUN3wTA0mSJEn9DDkj1JDp31czu7xMLZkMhrx34w5aSEMp6AAE6abtXituXDngZ/fkSJIkSbvGPTmjcNHfHc47TjmAF+3TDsCxL11QPRS0Vndvgf+58ymKUbTdawNkhgg5mwaGHLurSZIkSbvGkDMKL1w4i5OOWFitxOw9t5Vr//FYPnzGodV79pjZCMAP71rOspVbdvi8YIiQw6BgFLknR5IkSdolLlcbRy/ZdzYXvOWlzG5rpK0lw0evv5t8IWLVuk4OWDRr2PcF6cadPtvlapIkSdKumdBKThiGB4Rh2BmG4VkT+TnTyWEHzGWf+TNon9HAyUcsAmDNhq7t7huwhG2IPTkVQdPM0je2kJYkSZJ2yYSFnDAM08C3gJad3VuvKmfqrNk4MOT05gpc9LV7+MoPHgIgyAxfycllSiHHSo4kSZK0ayaykvMpYOsEPn/aW1AOOc9t2Dbg+sp1nazb3MMDT6ynGEUD9uQELQPPzHm6o7Si0JAjSZIk7ZoJCTlhGB4PvBv4+4l4flwsmFMqYm3o6KU3V6he39yZA6BQjNja1Qep/kpOYtb8Ac9Y31c+l6cccqJ8L4V1y4l21rFNkiRJ2k2Ne+OBMAxnAd8ELshms8+GYTjmZyaT8WwCN2tGAzOa02zt6mNdRzf7zm8DoLOnr3rP1q4cc2Y2QqoB8r0kW9sppDKQLwWhdX2NpVnK97C+o4f87dfSsjFLyynvJf3Cl0/Fr7XLKvMW1/nbnTl38eXcxZvzF1/OXXw5d/VpIrqrfRW4J5vN3jJeD2xrG35j/nS3aN4MHnl6Ix3dBZKZNP/5f1lWreusvt4XBbS3t9DR2Eyhs5fGGW3kM40UyyFnY6FUyUkW+7jxJ4/xno4sAIXsr2l/2cmT/wuNQpznb3fn3MWXcxdvzl98OXfx5dzVl3ENOWEYngkcB7x0PJ/b0dFNoVAcz0dOmrnl83KWPbORH/xqGU+uGnhmzrNrtvDCvWYQlZes5YopSKSrr3cVS4eM9nVv49HlG6G8ZaePDJs2DdzrM90kkwna2ppiPX+7K+cuvpy7eHP+4su5iy/nLj7a2pp2ueI23pWcc4B5wOBlateHYfhP2Wz2JaN5aKFQJJ+P51+6ee2lSsw9f3mO5zdtf6Dn+i3dpd+tfFZOMdUEyf6Q0xuVvo9y3TQn+pe5begOaI7Jn0mc529359zFl3MXb85ffDl38eXc1ZfxDjl/Bwyu9T0BXAx8Z5w/KxYqHdaGCjgAm7b2Av0HggaZRkhlqq/3VEJOXy+zgv5mdZ1ddluTJEmShjKuISebza4afK1c0VmbzWZXjOdnxUUl5AxncznkJBe+hMK6pwnm7k/Pw3dSiTm9VEJOD3MS/Xt5Ct3Te6maJEmSNFVsIzHB9pg5sLA1OPRsKreTbjj0jbT+/Vf4+VPw7WcXAvBE37zqcrWgmOedrXdW3xf0dVEobl9SjXo6KXasHdffQZIkSYqTieiuNkA2mw0m+jOms0Ri4K8/r72ZNRu6qj9XlqsBBIkE3/3lk8C+bNjSyprCLPpI0Z2eRVPfZjJB/1k7jfSyZkMXC+e2Dnh+10+vobjuaXpO/CfuX9fCSYcvpCGTnJhfTpIkSZqGrORMgpbGUpbcZ/4Mmhv7c2UAdPfmWbm2c9A7AlYU5pIjTUTAJWtP5aHEiwfc0RzkWPHc1gHXonyO4tqnIIrY8PMb+e9fPcn3f/PURPxKkiRJ0rRlyJkEH/qbQzkynMsFb3kpB+7TXr1+xIv2BOCHdy8HoLO7b6i30xNluHH9YfRG/QGpKcixcu3AkFO7TG3vYB17Jzfyh8dduiZJkqTdy4QvVxMsWdDG+W8uHR308oPm09Wb54CFs0gmAn7/2Fr+8NhaVq3rZFNn77DPKJDkss1v5pT9Crxq0/dJBhGbNg48c6e45bkBPx+QXsMfCvPH/xeaZMWOdfTc9U0yh7yO1F4HTvVwJEmSNM1ZyZlkiSDglCMXsc/8GSzcs5UjwrlEwI/uXs7Ta7bu8L1boyY6ZoVEQWmPzdYtg0LO5oEhZ0lqHb19BaIoItdXoBhF4/q7TJbuX1xP4dk/0/3jK6d6KJIkSYoBQ84UO+0V+wJw/6NrueMPK3d6f2tTBhpaAJjR+Qzrb72KbU/cD0BxyxoAeuaUDmLdN7WO3lye3z60hgu+eCcf/eo93Pvwc0M/eBorrl8+1UOQJElSjBhyptjieTM49AV7EAEd20rtpHfUjq6lKU2isRRy3tH8Gxqe/wtrf/1fAGx8tnQU0fMzX0ohCpiZ6KY9sY0bf/IY+wfP0rd1I9/5xbKJ/HUmRrGw83skSZKkMkPONHDiEXtXv18wp5mFe/a3hQ4XzWKPmY3Vn1ub0gTl05ahZgAAIABJREFUSk7FHsV1PPzUBpLbSk0G7lqVZnWh1OBgv9Rajsg8xXtn3MF5M37Blm05unryAOT6CqzZMLWHika5Lrp/eQP5lX+Z0nFIkiSpfhhypoEX7zu7+v0h++9BuHhW9eePvuNw/unth1V/bm5MESTT2z3jJz+9h5ZEjkIU8Mc1AY/17QXA0Q1P8pq2UvVmUWojEPHcxtI5Pdff+jAfv+F3PLpi00T8Wruk9/c/IP/EXXT/5KopG4MkSZLqi93VpoFEEPCxvzuCex95jtNeuS9BAMlEwMsOnAfAnLb+Sk4AFJ5/ovrz5mIzsxJdLOnLQgqeL8ykjxR39x7AyU0PE6bXQLH/s9oT23hu4zb226uNB/9/9s47PK7yTPu/U6Zq1HuzZdmWe+90U00ghB5CEnZDerIJ+bKbkM1+H1nSdtmQbMKSHtLYEEJoptnYGGzjjnuTZVlW79Joejvt++OMpliSCxiXZO7r4mJmznnf886Zkee53/t57ufYAACv72hLs7Y+GQzDQOuqRyqegGB1vOf3rg91nvx6Sorj3Cjk7qRjDQNBuHB70YbX/xoj7Mex4isIQma/IYMMLlSYzpUCYm7p+V5KBhlkkEEGp4kMyblAMKkql0lVuYnnH756cuKxKArcsLialm4/U8fno825idjulWyLTmS8SyFPaWO+tQWAdq0QgDlzpyAbc9Fa96Rdp1Ia4jev1NMeb0BaJ3dznW89uq8cMafklOtUm3cSeeOniLllOG97CMHqPK33p7TsBkPHMmFh+oFT1NsYQXfKs1MTFsMw2NXQT7ZdpGrXYwhWJ46bH7zgyI4RDaIe3Ww+9g8gnMa9PxtQ2w+AICBXzTwn18sgg4sdhhoj+JdvAOD65K9HVdIzyCCDDDK48JAhORcJUkmPNPcDCCUTqRGqqDz+ElpDG8WSaT8tFY3nKx+Yw6zaAnRPNqETSE6FNMRBpZrXd7QDcJX9MOO0TpTGrdgWfOiU69A6DwHmzmZk05M4rv7sKcfoYT+RNY+ZT664H62vCdslH0WQrRgpJMcw9BGKhh5IITlaDEPXEERpzGsdbh3iZy8epED08628NnOOoS6kgsoxx5wP6N7exGNDHbs/0tmEoUQJr/ohAK5P/ALBYj/FiAwyyMCIJusWDSWSITkZZJBBBhcJMjkyFyEE2YZ13GwmVxcg56enTxTU1DF7YiGCICDlV+C89SGkimlIlTMAqJTdaeeXSWavHd3bg24YvLm7g46+AC9tbmbNOyYR0j09xA6uxdA1tMG2xFit9/Sc2tSeZHpdZONvUY5sQBlWMTQ1eWI0NGJsupIDKJGTXqut1yR7WUKSOGidF56pge5LITmjvO/3A0YseR0jfPKeTBlkkEEcqf9GpT7OIIMMMsjggkZGybnIIeaUJR7rBmRXTkg7LpXU4rz5QdSOQ4Q7DzFZ7iFPDOLRs7CiUCiZaWvKUDf7Dvfyv2uOpo1fMrUY8fmHQI2BIKAPtieOGaGhRN1LdOcLqC27cN78DQS7K20OtTt9TgAjal436vdiHV5/xId0wlj9BJJjKJER7nKp6I2bKmSJSZKjdh7GOuuGMcecD6QqOcTC5+SahpK8jhHxQU7xObluBhlczEhTWtXY+VtIBhlkkEEGZ4SMknORQ6qYQtRVjkd38mZkBiXFBaOfVz4FsaCKLDHGJ3M2cl/WRn5Q8OfEccPby/6mgRHjevZsSPywR3c8B5oCUpyWaGqCrMR2r0R3d6Ac3TRijtFIzpZ97bi9YaSYL7mGUdQF3ZPevNQ4hZLT4zYD+TQlp+tIumJ0HmAoUWL7Xkuk36Wlq8XOjZJDLHnvjLAPVdPPu4V4Bhlc8EghOUaG5GSQQQYZXDTIkJyLHILVif22b/Mtz528LS0jyz66OCdIMo4bHgBJZpzYzwJbS9pxUQ1z8EjbiHGO4+uTT+JKgFhSi2DPBsAIDqGHU4hKnEwMBwN6LILWn34tAMXn5unV+5GMZE2OFvKNOC9VOTIHmoG60rwLpeHt5HnBIaI7nyfk7gfAJaTuvkbR/X0j5jYMY8Rr7xeUw+uIbn+G4F++jmEY5yldLank6GEfP3/xIP/26+3sPtp/Tq6fQQYXI9IcHrUMyXk3iO1fRWj1f2NoyvleSgYZZPB3hEy62t8AXA4Lj37hEqwW6aQuYmJ2MVLFNLT2A6MeLxZ9BHQ7ggCGAVYUcmNxJUWUEk5orzQ7WepyUIAfIziUXpgb8aO27CG85jHsi29DU4Ogj1RRcsUwnoE+SKnh9XuGsMUfb3/lRaydu5kkdJgv2LIgGsSIRTB0jcja/wGg11JFVe0ElEPriO19hfn6dDpYSIEt/cfUCHkhrwJdNxBFAbcvwnf/uJNLZpZz51UTAdhR30t96xD3XluHRT67/F/tbjAfaCpa277zouSkpauFfexpND/Pte+0M78uk7qWQQajQrnwlBxDjRLd/L/INQuQx88938s5JaLb/gKA2roXS+2i87yaDDLI4O8FGSXnbwQFOXZcjlO7/sjjxv5B/GjWZpYUB/jJPaX8131TqJLdiBgYjjxsi+8GQeR47hLeCE2jO2ReSw8OEexJKkCGf4DYobWAQWTH8/h2vw6A7bovoacIJzliCEs0PT0t5DGbkuphH9O7XmSSYM4r2FyIeeXm/EoEI+RJjHny+S00dXrR/aYaUSgFyHFaKLSnEysj5GHdrg4+/YO3ONTs5lCzG08gxrbDJonTBlpY/9oaNuzt4q3dHae8j2eMlDS76K4XIZUYniHJ0fqaCD7/LaI7nx+RvqeHfWh9TaMPjKWTnGHI0oVlr51BBhcSLsSanNjBN1Aa3ib8+o/P91JOidRNME7ijJlBBhlkcLaRITl/Z0jd9dsfq0ZzlSCPnwdAseTnXu15jNd/gP2tH7K00AyEW5RCLLOux3X/L1kZXoiGhEc3++MM9fawa/vexJx6YOCEFDMBx9K7GMyZSr2StHHOFcNkkV4PEguYTm+BXa+mvS4WViftjpUIRoqtdKEYYPX2tgTxKRF93JO1lalqQ9ocamCIP609CobBfz+zj654LYrbFyUcVQg9/+98PnsdhaI/0UNoNMQUDX9o9EDHMAwMQx/1WKpyow+0pB88w3Q1pWkH+kArsd0vEd36dPL6apTgU18l9OJ30Ia6Rq5vDJIjSZl/BjLIYCwYF2BNTupGz4UO3ZdMhxVOo9dZBhlkkMHZQiZd7e8MoqsQ6/wPEfF7Ka+7lbzKPDR3h5krLQiJVDYj6GYJWwE46Muhd2cHjR0eWnpM9UXMygcN9u4/Ronkh/gGnT7QmriWY+nd5E+dR9hZSfPeTn4TuBqXEOF7+X8lW4wkevsMQwv5iCkqWuOm9C+mZEUXzVeaWnupGZ/cDSyS/Kxv96CXmCpQheyhQksGAEEhiywjyFubD3GZLYs7nO/wM/+1NHcnG6+uWb+Pq+OPiyVfggCNhkee2kPXQJAffOGSNOVMD3kI/vXfkMfNxbH802ljDCV60qDkTJUcI+xNPNaGkqpTbPdLCYtbfagTKb/ihHUkSY4aTCE5YibwyCCDMZGqll4gNSWpvXqGHS4vVOi+ZD3kueoJlkEGGWQAGSXn7xK2hbeRu/wfqa3MA0AqqML5gX/BeeM/k3XvD7EtvSft/Fa1iD+va2Rng7kj57TJTJtmWlUXSgEqpKER12gTq7HPvxl7ZR0ALd1+QCBg2FEN82s3w2IG6F2quQ497OfR376FrATRDIG3wtMBcFdfQX2nSQR2H2pn8/bDiesUSX4C4RiK/4R+OsPriJpkxqkHuStrB6JgcL9rPUfbk6Sj4WB94nGuEKatN0BU0UbMpek6LT0+oopG14BJhEIRM+hRW/ZANIjauBk9kk7eEiYDtizEvCTxEHLNHkdGLESsfj3+338ere/4qO8jFakudMOqlmEYxA6tS74eGalGpSo5WihJlHzBGBv3deEbQ6HKIIN3A0PXCa993EzPvIhhnFCTo/v6iO1bdX4dG2Vr8vEpHCfPN1JJzoWS7pdBBhn8fSBDcjJIg+gqxDLjGsSSWgAi1nxa1aK0c+bXFVNebaaeTbH04BRjeHQHipH8Ou0NFPOZ/3qLLfvNtKnmnmHlQMAbT3WrjjcmPahUm4ciPuwB8/xeLZcXwwv4xtCH+fYqH70Bs6DHJqiEhpLpD0WiH4cQQ2b0gKNLywcgR0wG+E4xuRsroFMuJQlPvhRA0w2au0Y6vfmCCsOGbJ5AlNe2tfJPP36bnUf6MFKIjda2L23ccKqallXMvkF74nW5fCoAfo+X6Nu/h1iY8JrH0H39GKOYNQwjNdXMCHkwdN1Ud1KCHSMycv2pFtIxv/menUKEooFdPLXqAC9vbhnzmn8vMAwdPTB4VucMRRTW7er4mySRhhJJc1dMhdZ1GLV5J7GLnOSkBeZKlODTXye6/S+oTdvP35pSnCGNyIXd2NfIKDkZZJDBeUKG5GQwAoJkIevWh3Dd/ysiNz5MLMUC7aZl47nlshrEnJK0MVujk7EIyXqULdE6IjGNP69pQNV02npNZeFTN0/Dkp2fOE9DpO7y6wEolzzUWboB6NAKuOXSCUh2F6pmJGpyKnJF8sRkOlmx5CdPHDvdq0szVaJhQjUMlxAmTwzycN5z3OrclXi9ID53kpQlMeRP/kC39Ph5dr1Z4P/GznZ0b7Kfj9qyJ23csJLTFc2iJZpMk9NLTJUr6EsnLcGnv0ZspxkY6rqBpqfX+aSmq2HoGCFPWt67ec7I9aemqzmMEPOtzXwsazP3urZyq3Pne+6ZEzv8Jv7ffR6t99h7mud8IrbjWYJP/TNq234Mw0Bp2Y0eHKlUngl++9oR/rT2KL9ceegsrfLCQfDpBwk++eX04vI4UtMwDX30WrWLAamBuXJsS+Jxqg38uUZandAFTnKGTWHgwqlpyiCDDP4+kCE5GYwJQbZSWZKdeD6+LJs7rpxIUa4DMbcM65wPxE+UyJ93DYclM71MWnwPN1w6BYCWbh/v1PehqDo5WVaWziijcFxtYk5Lfjmz5s9Cz6tCEgyutB8xD+RXc9OyGr7/maV89pYZXLnQHFOeI6WRGrugjJouN4zuuJJjF9Jz6Wvlfj7k2EVuisIDUGd3M9vSSnuPlxPhCSQDi9Xbk45yukE6yek4iKGn9P/pORZfS15CWdIkO4eGHAC4hJHpJrG9r6CoOt/89Ta+98ddiZ4+hqEng5q4U5ERdKftlgK0tHQRjqoc6/SiqGaAmZquBvAPrreZYe0E4FJ7IwPeFKVH0RKpeKeL6KY/ghIm9OoPzmhcKgw1NmKd5xJqj9m4Vus7htr8DpE1jxF64eH3NOdwH6L61vdGli40GJqaINyj9cIiNZ1LOX+f6XtGikKaWnPIOeyzNQKpqu0oTZQvJGTS1TLIIIPzhYzxQAYnhSgIXDqrjC0Hevjw8klpx2xL7kYqqwPJwnVVMzCW1qF7e5GKa7gF2HNsgNYeP0+vawRg1oQCREHAuvA2lCMbAJBKzTntdZcQ2/FMYu4rr16KLItYZJEl00uJHXISBQqdIJ+g3Ey3dI65/gEte9TXP5R3mCJtZIPQfGOIT2ZvoLm7kc27XEybWEpBXhaQruSkonswgK4lSQ5qlGdf3Mgdt12FoEbROg8CsNldQrviZFe0hlDuBOqPeJkKOMTRycTq7a30DYURMBhY/Qus3jaiyz6NIx5ciUXj0fuOowfciUBCl2yIWpSQx813/7iT7sEQ18yv4qPX150yd9/ti6AbBhjwf3+zHVU3+O6nliAKIJ+JA5saxdA1hDgJ0/0DIEqmWUUKet0hfvnSIW5cOp5FU01lMLTye+iBAVwfeRTB6jj9a54lDJNF3T+YSFu7mJysziXSFEVGBvyp9uZGLIxgyzoHqzr7SGsGmvr6KOrVuULavb2AlRzD0DGCSRU9k66WQQYZnEtklJwMTomPXz+F//jsUqaOzx9xTB4/F7lqBgCC1YFUXJM4NmNCAZAkB7MmFgIgOvNw3voQ8sQlWOfeBIBl0pJkDwXZilQ0Pu06gsUMeMWIN1FfM2xJvdDWPObao1gwZFviuWmXLSQJTs1isDpHjJsgdlG0/TH4y5fpfvMpIF3JSb9IEOKpObECs7Gov7We9t4AasdBswFoVhEtERcaEn8MXsFz3dU09p58V3PNJtMQ4Wr7Iezt2xF93exdaa4lJtgRs01iYAQHEykhRyPmPXcJEboHzTWti/f9GVZI/hxYRoNSNuJ6mqbjDcQY8IbpcYcY8IT53KPr+fJP3mbAc/KdeMMw0npgaHFFxIiFCD7zrwSf+dc0dQvM5qstPf5EXyJDiaAPtkI0mGa5fa5gxMKJND8jMIAgJ+unxqo7OR0IXLypWieDkWJeMWq6Wor5xflU594rxgrMz1UT31GRQrz0C1nJUSLpildGyckggwzOITIkJ4NTwmqRKMkfSQROhVm1hYnHgpAkPQBSSS2Oaz6fqO0RXYU4b30I+/LP4Lzl3xBOIB5iQRUAel8TAga6xUnpomtHv7BsxX7DV3gh9x+4bFY5Ul4yoLfMuh7LdNMwWsgpxbX8k2Td/X2yPjayqV6F7MEiaLiOrWHzzmPManmSL2avIV80gzerLFKYY6NYMgNgwVXIcc1sWlojD9DQ7kE9tg2AftcUQGBGTT7FeXYMA2LIaCl/gt1qHlsikxPPSyUvLiHMBxzJPkTL7Gbqm0+3I7rM+6kH3Ghek7S1qMUAZIsjVRs1Ygai3Voeu6MTRhzPF4MMeiN0DaYHb5GYRkP7SDVjR30vh5rj7m4RP6SQmFirab6g9jWbtrtKZERK0/B1OgeCBMIKkaGUAuXTqIPRg0OJ9LLR0O8J0zd0+oFoalqNHhjEiCaDdH1obLXwZIjVr+eR/KeZJPdgs/5t/XObRnJGc/NLbXh7MaerjRGYG2fY3+pswjiVycgFghPJbUbJufAwllKZQQZ/C8ikq2XwvmF6TT7/dNdctuzrZFJlLll2y0nPl4rGj1BwUo/Zln6Y6La/gGzFufxT5FRMI7D3D4lzIgvvI0cbQp60DCm/gvviU+mez6H2HEUqHIdUPAGpZCJirtkEVbDYECy2tGu9qc5nnnCEfCkZxMze/V0Ayi3w9ZxX2BSdwqGcy3Bl2cjrNAN9v1zA1t4sptpgotzL7mM7Uf2mqcEedRJgMLkqj+J8J+v3dAICumRD0sxAQK6axrzLP4609WdoHQcpkXzUyn3Igs6g5iJPDCIJ5q5oSHBwdFCgBlAOrk2ss0swbamdQhQRHT1Oolp6fDiDQRwClJcVMjgw8h6XSl4GvGE8gfSgzoaC2tWAMaMUQTTn6xwI8ot4If2vvnYVwgmOZG2HDzF1GXg7mxm+u1ve3Mg7op8v3zELiyzR2W8GwcWxDv7tsTUsKYvwwfi5eujUJCe89nH0vib6L/kXJsyYkdYrJKZofOcPO4kpGg/94yIqikZPlWrp8eGwypQWONP7eQSG0B3Jm6QPdUHFtFOu6URE3/49NgG+lLOGsGElusuDbcGtZzzPhQg9nE5y9OAQ6rFtWKZdiWB1phOf86l6vEcYY6R5GhE/Wu8xxKLxaX1rzs2aUo0Hxm5efL4xQu06RUCt+/rQPT3I42a/j6vKYBhqxyHCrz2KdfFd2OZ+4HwvJ4MMzjr+trYWM7igIAgCNywdz1funsOKJePe83zW2TfiuPkbZN35XSw18xGsjnj6GVjn3kzRvOXYFt0xogmmmFeOdeqVSMWmeiHIVqyzbhjhEOe44QEss1cw/pq7eVW6DtVZBPaRNT1OMcb1jgMssRylvCCLKXFHuPVdLhpC+WiGQIEU5Fr/SsBArpnPO71mX4tJVbnMqEkqWkZhUlGpmlBDSb4TMc9Ug8okD5fYzHqm1eHZHI6n5wEMxqy8Xj9ydzzkrMRAQBQgS0gGFN/+/TtYMcnLPTfO4jP3Xj1ibKnoZdAXSTRDvXJeFbNqC7k9awfzW39PePWPMGIh6lvc7G9KEoBedyhRv6IaZspavtLD3qP9KAPtifOsg8c41OzmSJsHTdfpcQeZJPfwQM7rfMy1ibA7VUkZve9R4njIi94Xd7dbu5ndR9NZW1Onl0BYIabq/OaVwyMc6gD8oRjff3IXjzy1G8Mw0t2yDA29P9mzSB/qOul6UhFe+zjBFx4e4STlEGLEdr2I2nl4jJGm8UJ0z8to7nenHJ0u1u5s5+HfvYMv+O7Th9LT1QKE3/gp0e1/IfL2HxKvJY5fxOlqjKE+6P3NhFZ+l+imJ894yvDaxwm98si7d51T39+aHG2gBaVl93ueZ6SSc/LvW/DprxNe/aOL2qHxYkJ41Y8AI60eNoMM/paQITkZXFSQK6amkRP78s/gvP1hrIvueM9dv+Xx87AvvYe5U8r4/GduI/9jj+K47p8AiAgO/tt3I19xf4zXQnMAmBN9hwUTc6izmKYD9UoFEcOKe+ZHaFAriBgWooZMZ8U1DPqiiIJAbUUO02vyyc+2Ma7URe51n4F4QbZYVGP+P9dMr1tur6dQChA0bNQLE9karUusNWpYOKJUsCo8m2DVEgKu8ayPTMOZm49gdwHgEiOI6CyzHaVE9CVUoOycHApKihLXHUal7Ob5DU0UNK9lqbWRxTNKuWx2OTPjTVu1joN0v/IzfvD0Hv76VlNiXHt/ACNOchq0ShRDxCkq7NlzGNHTkTivVu5DRCcYUej3RFA1g+nxuSfJvZRIybSbwKBZYzTkj/K71+rpdafvCGtdyQauxaKPt/enk5Ajbcn0upYeP199fDP/89z+tNqiHncIVTPwBGL4QsoIh7rUWgJ9qJPQ6v8muPK7GCfpeq8H3KjNO9H7m9G6jox6TmTHc2OOj+1bReyd5wg9/1DitYPHB1m/9+yRnmhM489vNNLa62fzge53PU+qIUPY50GPB6bD/WNOtybH0BSCz3+L8Bs/S7x28Pggjz27H7fv/De6jIZPTtCUho1nNJ+hRFGbd6J11Sf+bs4UaUrOWa7JMQyD8Os/IbLmsUStn2EYaIPtJ+3fNSpOVHJOQnLSHClHc+vL4OzDGNn0OoMM/paQSVfL4KKGYHWMmeJ2NiCXT8HxwX/Fp7hoeaoBgA3KLC7XG8jGR9baB0EA7NlMqp7JjdX51M4soyd3Ft945RAiBrV7zUBtXKkLu9X8k/v+Z5YiCgKyLOL68CNo7nbkctN2W6qYioGAEHesylrwQf59ymWs29kGjW+a60JDR2R1eC694SIqKrN4ta2Vq3PtiOSiR/xkCxGm2ru41bmLQc01fMfAYkMQBMTcMvS+Jg7FKplh7WSapYvF1iausewGC6BdgttRiEtMBlTZAwdZaM1jZ6yWWrmXqGGhoy/IXKsZrPUoLrIooEYeQHS3YJOT6ohDVJgk9+AL1CVS1SZbzOOyoDPTklR9Yj5zvlXbWnl7fzeqZvDpD05PHNc6kz1niiQ/XbKIqums2t7G/MlFNLQNYUFlWk0B+1t8+EMKexoHiMQ0/uWeuQiCkGaZve/YALXtrSS7GKVD7T6aMBDQuhuQq2aOep6WUiOktu8f9RylvxXD0BGEkXtMCfIWD/gUVeenLxwkqmjUVeWNmXZ3Kgz5ozjtMjaLxM6GJJmLKqcf5HiDMXKclsRmQqq7WuOxTqZZ088/XSVH6z2GPtCKPtCKoX4KQbbyo2fMmi6X08L9HzjzNMGzhV53CD0UwpL6Ucm2EepOW6+fcaWjOzmmQvf0pPe4CXkgp/iM15WaQhfzD3E2feuMsDdRE6f7BxGzi1GbthF585dY530Q26I7Tn+uM1By0giffG7T/y4WaH3HCb/1K2xL7sZSM/89zZX62Qg210nOzABAadmN1nEI2yUfQRAzofPFgoySk0EGp4BcPoXKcZV8+Y7ZfPnO2Xz7M5cSnP1hsCTdt+Rxs7nvxmksm2mqMJfMLOfmS2rRkGjsMIPBSVXJENpmkbDI5p+fYHchp9R7SPmV2K74BAAxWz6uudeTn23jzuWTsV/7RXq1XN6IJIPspi4fg/GAvSjXgeA0r1MtD3Klw0x3K5TiAafVkQiurdOuIuYqY7vjcnTZTrYY4V5XstmhtOX3FIbNviC9Wi76LLNi5jJbA1XSIA/kvM6Xc16nt28wEaAM6Vn0i6bSNlOvRzJUYobE5rihwiLbcbzBGB39ARxCjCopmZZWJKXUFoQ9ifcGZu3MMAzDSEv5KhL9hN19HHv+p2zZtJuHntjGQs9q/iP/aT6hPsU1s8z0QAmNcGcD3/ndNo62e9JIzv+uOoQjYKpKrWrSMCMkuhjQXGkOaWr7AcZCGsmJKxonQkbF2zNG+puU/PHUI34aOzwJItJ7BiYKqRj0RviXn27mkT+Z6UdbDibtzgdPUylZv6eT//M/m1i/N7luPSVdLUtMD/oNXT2hJuckSk5KAb/u60fVkvd6NEfDSEw9I3L2XtDvCWMV0tULMXskKfnOH3aeci7d10fwmX8ltPJ7ydferT15CsmRI0Pvfp5RoLuT6uuwqYEeT588UwOORCA9bAd/EuOBVEdFI3L+7LkvZKitezC8PahNO97zXFpfUo1P/Xcng9ERWfMYyuF1KEfOTLnN4Pwi883OIIPTxNzJRYnHRZcsx5i/CLVtH0YkgDxp6Yjza8rSd3ZTa3FOBdvUK5CLxpHlyEWQk1vkltpFdC6roHt1AzcuGceq7W34gjGae8yUlcJcO3LuYrTOQ9ziHJlTb6m7LPl4yuUUTrmcB4DwG8dRj5s/nF4hB4so4PQPwlazvqJVLeSnG218Ox/Gy/18JMskQ3ZBYYb7TRR/EwLQr+dQWVQB7sOJNL4jSgUlC66FQ43MsbaxztON293LCkcTojB6Q0Wr4kdRddr7zPfVMxgiNDSAIzsHIziUtutbLPm5NfYSpUNe7nW1sjK0gCVWk9wRcnPn5KPc8+Ub6HvhUVzBdtoihbyx8UM48ouxonCzcw91cg9WQcPdIejDAAAgAElEQVSrO9gSqWO8aysAmqqyM1bHCkdSlRk8vIPCSZcjedqQJy5J9AMC0LqTJOfEWgndgD49lzLJS/+2V3Atujxhv54Yk0IcGjas4ZiQrNlKJWVngv3HBzEw0/bCUTVBuoEEOU5c3zBGpH1Gm/dQsvVJplrmUbz9dZS8u7BMWJim5GQJUXRBRjRMQvDcy1u4IYW89PQOMpbemtpHZd1bO6m7dHniuVVO3ltdN/jpCwfYd2yQ7CwLD39iMTlZJ8hHZxmRqIJVSCdUgqsAPF1gJMnYaDVfJ8IkCgZoSTUj9fM+XRiamlD6BjQXRVIAtfMwYu1SIjENl+O9qSBpJCeeCjdMWM/U5GCYwIrOPPRY+KRKTmpN3IXc++d8ImFxfxbuTyrJOZ9OgRcbzkd7g9Gg9R5DyMpHdBWe+uS/Y2SUnAwyeJcQ7C4sdZdinX0DonNkolNNeU7a86njRvYZOhmkopoRDTQBLp9Twbc/uZg7rppIcZ6pJg3XrBTm2LHUXUbMmaxbkicuAasTuWY+tqV3j3oteeJi8z25Cim/6xsUXXGXeSC+Y9ymFuE1nLRrRYgCVMlJ97MF4hEETeFwrIIGpRzH5EX0SqZ5gm4IvBKah71iEmFHKTZB5QP9T3Cn9gpX2c3ULKlyOifCZkRp7xxA1UwSVCENojz7IKE1jydUnGa1CN0QsAkqpZIZLNbIAyyymj/eGmaAHNv/OqG/fhNX0EyHGycPMmtoHX29AzyQs5or7Ucol82dcLliGttjkwjotvg1itkVnYBuQMyQ0AyBHG0I5YX/S+StX6U52+lhH/qQGSDqzpE/PEN6Fu1xlaisfxvh135A7MCaxPETzQ+qWl9macsvKRLNwOZEQnK6kKI+bMT4as6ruF98hBIGmGlpA9KJky8Y42s/38IvXzqUNj629idUy24+n72O8WIvkbWPYxhGWk1OoRRIEByAoeOHSW0Q2tTSO6oqow11pZk69LW3ptV7Dfkj6J5u/L/7HH3rn2JP4wC6YeANxHh2Q9OI+c4Usf2riR1+c8zjwcBIRUGwOeEENzW7oJi9ok4CPTyS0Ly15RDh6Oh1Lpquo+ujzJmi4hxQqgGItR/iZy8c5KuPb0r7ngTCCt/5wzus3t520rWlXTdNyYmTnHjqYWoK4sngCUTNtcdrcgRnnnngtJWcC9cx7nwiQXJO0rfrVN/DxHmp6YFa7JSmEH/PSLPZ1s9/HZPm6SK08rsEn/rn872UCx4ZkpNBBu8T8lzJXWabRcJmlU5y9ulDFASqil2IgkBlUXoudVGuHUGUyFvxReRJy7Bf9Snsyz+L677HsV/3pTFzieWaBThufpCsO76NlFeBdcqlWIpNRzwFC4eVSnKzrExYfEVijGXm9WiCOV+jUsr2wlv4zC2zuGRWBUerbmFAc7EmMotePY/CXAfueZ+kSzWDnQHNRYc8DvvVn8Nx41eRJ19qpv+V1BExzDmbm1oS11pmO4ZoaOgd+1Hq3wLgcKxqVCXokngvoY4JHzIVNkODaBCxoAr71Z8FYIalnRtCL6eRNQDn+JkYCPyn9xbeDE/ntfBc+vRcfhW4hp/7r2VnrDbt/O69m2ju9vHQE9vZ+6ZJeMSi8WwLVHIi+vQcerR0Mhzd+hSau4Ned4i/vrZrRGG2gyifcr2FBZUBb4S393byxR+9leZuB9DQNsTB5vQidm2oi9DqHzNv/yP8v7wXGS8PkuNt5MHcV/h09npmW9qYFD2IqsYwokF6V/434yNH2H64N5EyNlbgo7XvB23sIvSJcrqJg12I0RA3g9B9fUQ2/RHl2DZCf/1m4vMEM/XQ3d7MYusxwGDQF0Vt3QtKBKnNTAmTRFNp2rS/m+7BM0trSk2F0z09RLc9TXTTH+no6Bv1/NAoJCdiWEcE6zlCeEyyMozRVBsx6mffsZF+7lFF48Gfb+V7T+4aEbQO1/RoSNTHzO+Z3nWYY50eVM2gvS9JENZvPsiHg3/Cu3Vss4sT8V6VnJYeH199fDO/fuVwIl1tmORosSi/WHkwYShhGAaxQ+tQu+rTSE4scOYK198DhonyWCRn3a4OHnhsE609p1Z6TjSsMGIhDrW4OdaRufcnInVDZ7TGx+caeooxR4acnhyZdLUMMnifIAgCFUVZdA0EuXJuxakHvAtUFmexNx4kFebYyXaaO8xS0Xgc8YD+dNeaWhckiBKV//h93O3ttAVsLG0c4vpF1djEKAw0I42bg3XaVVgmLaWpuZNBcTxfXFCFFO+jU1hdy3f23J6YLz/bRrS4nO/4biJPDDGou/iHFVOZNskM0hzLP41hfApBEOj4xdeoEvqZdvR3fMJVTKtQzeWWhsRc+qC5K91CBWKVht5xgH4tmw2RqdyZ9U7ivJLp83FU3oI241p0b6+paIkSgU3P4YoNMNHSR8Sw8Jjveu507mC8I0DO5Pmwajd+w8HK8EKWTC+lTNHYE89+s1VO5cW2HsptIb7sfJm8cAf/749vUyT5KVC3gABD+TPZezzKJelCHl1qfhrJ0QUJ0dBQ6tfz1945eI83cuMJYwDKZS8rHPsQehqY1r+Pb2cZrF+7iNkTPweYbmmPPLUHgGsXVtE1EOLOyX4Kdv0uUUs0WnPYT2avB8C/uwKH6qUsUM8/umCPewLdgyEEwNO0f9Q0s/BbvwKgVS+lWugbQTaHXfOGYRcUYgdeI9jYiWB1oLUfQKlfP2LeUtnPg7kvIwkGQgC2ByehDJiftz02hI0YH7xiGg1tHg4cH2T74V5uvdwknrpusGFvJ5Or8qgqGVlIvaO+l1+uPMSnbp7OspllaL2NiWNP/Pkt7v+Hm6g+YZzk7ThxGnYeD3BicmqOGMbtj+I8SS8wYxQlJ0cI4wsl3fqGCc2xdg99Q2EgTO9QmLKCZHPkYdMBRbBwXC1BMwSk0BBSxAtkMeAN09rjZ1ypi5qu1ymXPZTLHlRNR5ZOvq9p6HqasjZCyYkER01p9Aai7G8a5JJZZby+w1RMtx/u5b5F6SQHNcaOepPMfPaWGeh9TUQ3mxbcQm5pYr7W1m5sbUNMOUP1+28dSdLpTzMv2XdsgL6hMH9eZ36nn17XyIMfPbkxgX5Cyltbey8/fKETiyzy2AOXY7NIGGoM3d2BWFwzwihFObYVPeDGOucD79nZ9EJHas1banrteUNKqqzu7UUqrB55imGgtuxGKqwe0S7j7wkZkpNBBu8jHrhzNnsaB7h6/sid/bOBisKkr9L1i6vP6o+NaHUgFVRSnaNTXTFcT2TFccMDiXOkklrqSmqpO2HsvMlF5LqseOONRa0WiVyXDQ2JQd2sVZpclZc2ZnjtA3W3kXv0j2SLYeZa25iLGeTqBsQ38enVcrCW1mJfuoz6t4v42ZFSYobMJEsvc61t9BgFTKow77lUOgmpdFJyzbVL4MiraIbAb/1X0qkV8rj/ev7jw4tHpB1+9pYZtPX62dNoEsl7r53Mo38J0hSw0W4tiKdxvZGmCP3POxY8ei4qIjI60txbeLMhzBtDBQgYRLHSq2ZzvPgqrhp6DqVxC0fd5VwqmzVMLWoRIgb1SgVtaiGfzl7PtY70FLLrhW0M7pxA4cIbaO1NBivNe3cy1dKN7DmGIOrUxyrIl4KUSSfZnT26gZjNzvA3J0cIEdv5PH2txykwPKP/SsR3M3eGx1Ho8OCK92SKGRJWQSNLTN9dLBL95Hs3oKcuwxhZxzLBFUaKmIH+bFs722OTUAfaEykHlfIQk6tyyXfZOHB8kB31fdy0bDxH2jz4gjGeXGPWRH3tnrlMqylIpHuJopBoXvv0m40myUkxiSiTPLy+o41P3WymTg54wzy9civ3hp8FwaxJGy/HHQSDAiQ5BwAzLR34Bvqh2CRJ+5sGOHDcze1X1OKwmTfQGMUcoEAK0NbfC1Sz/XAvf1p7lDuvmohsTd70pk5vGskZbqgZNWQUZHq0PCrlIarlQRZJx5m+8xl+8uYKrr1qPnOirYlh/b39lFeUYqhRjFgY0Zn+9wdg+PvSa4Yi6UoOhgZKGKzpN+BHz+yjvS+AJxjDKieDYT1e6+HV7TgBUTCQ0HEMHCH45C8RC6qS10pRcrLECCu3tr4vJEc3DFZta6WmLIfp5VYMQ0d0jLK7cAEiQZQNHaIhsLvwh2L85Nl0J8eYOnaNWHtfgCOtQyw7QQ3auKMRcKKoOoea3dSUZePY+QfUY1uxX3E/lqlJFd/QNSJv/hIAqaAKedycs/MGL1CkqrAn9nBr6/WTl20jx5nM3FA7DqIcfhPbFZ9AHKXX3nuFHkp+drq3e1SSE9v7KrF3nkUqq8N5yzfP+houFmRITgYZvI8oznNw/aKR/wCdLdRWJH+cr5j9/qhF7wZWi8TD9y/mydcbmFJtBlPZJxRElxU6RxvKZcuX8ZLmINS0h6umushxH0b3dLPHuoiIuw8FiTXhWVw7qxCpoJrJN36MSP0GAF7kOoQqP8U1E8ckfMWLb6S+7Thre0sYcNbylRvqiCk6RUUmwVmxeByrd7SxYrGZrldV4uKquRU47RYqi11cv7Cav65vYneshmrZnUZwjipl9OvmZ6IWT0XuP4y1oo6Obgh1milRDQu+wR/XHkP1ScwryCY35ud7rmRDyfpYJasjyaDBM345rpYNyILO88FF5MsRltsOIO35K9rEWTR3qxSKfhxCjPtdGxKW32HDwm8DV3Kt4yBlDtMR7uf+azAMgS/kvJGYXw71Q0rd8TJbIyUd+ygZJbtyUMtCE62UCOZ73hcbxxXORlyY12xQyqm19Cca0e6MTmChrZl86fQKm001wsRMSzv/lf8UojeZBlZt8VBTlk1VsQtZEulxh3ji1Xp21Kenm/1+9REe+dwl/PzFgwy2Hef+BSCShY5Ivsust1JTTCJKJS+vN/Rz+xURcgLNKKt+wbKIA4tFp1Ut5An/VXw730z5ihkjfzaXOw4T3P0ETPsuhqHzxMsH8Ud02nr9fO0j85AlMc2NbhhlkpfrO35K/c5/4s/rugkYTlZuambO5KSD27FOL5fOKkdp2m72URq3BBkIqeY62rWCOMlxJwwybnDsZ/PGCEtzkq52vs5myitKCa/9KVrnYZx3mqmpqUjW4wiAgRH2mfVXqXbgkQBCCsnRjWSK3JYD3WmbF9FgAAvwzLYB/jEukpVIPm7XXsHQ0vtdpSJLiKKNVo90FnC42c1zG45jReE/K1YhCzpZH34EYdgB7gxhqDHCr/8EqWwy8pLbTz3gXcJQomnprHrEh2R3sWHvSKdGiySkj5MtCSXmW781DWYWFnvNANBiByVCf5+bYfb++PMHkCWRH+aaBizRva+mk5yUeh7l+I4LmuTovn6Uxs1YZ9+IYLG9qzmME5ScYRWtvS/Aw79/h6nj8vnaR8zG5IauE37tUcBsRG5bfNd7fxMnridFFdY9PSOPRwLE3nkWMB0/R1Nf328Yhk5o5XcxoiGy7ngYQX539/69IkNyMsjgIkZpgZOvfWQeeS7rWav5OVvIcVr54m2zEs9FMfmPbG6WFXGMf3QFQeBD182D6+alvR7d0cYzbyY7oQ9bctusEl+6fRa/fuUwt185iUtnlZ90XYLdRd1HvkbHrg5uLM+hrjp9R/v2K2uZPiE/YRQhCgL3rZiaOL5iyTg6B4KsP6hTKQ2x0NZMg1LObwNXJgLgWy6toWDBAozBVqTKGbArqcTMnzmONfsGaO8L8Ix/AZ+Op40B1Gcv4w13bfw+QJbdQvm1H+crj5bgFKIE5Hw+euVk6jcOMs3aRfiNn1IYKebfcvclmr0OwzXnWmLrLbwdmcp8awta8WRC8hSynRZsl8ymaftGnAP1FEjpOeYfcO5LPG5SSujQCqgplBkfPEizWsJLofl8OvstItlVeN1ZRPMmgNdMl/PrDoJSHlm6uSu/LTqJhbbmk34ew4jKLmxqes2H7QT75jqXH1kSEXrr+UjpUeoHRHbW6wjEU78MJwYC/Z4IDW1DNDS28fXc1eTWh7nWPpc1kdm4NC/+333eVCTiKJO85EbdPPfkM9xjeRMXUGcxA4n9sXFUVJRA/HTVkOgUKqg00oPLrGAHuq+f0IYn+Jq9lUejN9HYAZ97dANfvnM24wOeUYtgRQyqdv8P38mH54OL2OCfxvZDycClqdOLNtRFZN3PAdDd5r2Nxn++29VCltqamGNJqjZWQaVOTm/0GutrQ/fVmvVUgHpsG9LC9KB8uB5HLByHPthqKjlqLK3+yogEICX9pSOlBsjQNYrdu5koixxXS/B5vRQCQd2GaojIgs7Njj2j3IX4+MpZCJ0HyBJj6Gr6Z6+oOhIaAkaa42RM0dh8sIdFU0tO6SynR/xkbf0ZcyxVZIthpIgHA1A7DiBXz0EbbMMoqmXfsUGmjs9HEGDH4V5KC5xMH8MdU+tpROs8hNbbiHPRreZaO48QbdyObemH09Z6ptANA03TscjSCJtwI+xHzzV4c7f5mQnoyOgoyAzzQ22wndDL30cun5quwKMha+ZGhJhXjt7fjEM4wQY+pemx4EhXI3RP8rulNu/CuOy+MYPY1h4/3mCM2RPPjwtYdMczqMffQZCtWOd8IPH6cGroaMG/our8aW0Ds2qLWDClOF2F1TWMsA/BmceRtiEMA462e1BUDYssoXUkWwwYYT8xRWPlpmbmTylmYsVYndjODGnKknckyVGOp1uMGxE/wjlWK7XeY+h9xwFQ2/ZhqV18Tq8/jAzJySCDixzTxl98eeulBaOrOCdDKhmxyiK1Ke518+qK+en/ueK0d6tkSeT6uFIz2rGZE8b+QRYEgU/eNI27l0/iiVeK2NB2lE4tP+Hm9o2Pzk+u1TkbMOtmhuGwyXzrE4sY8IT57Wt5rBkYZJmtkcCsu5iz+CpWbG1l4ZRifKEY2Q4rsiQyrrqUI20ePn39FGbWFvDQ6kt4UH6JrKFOptAJKW/bvvBWHA4bxtRrcG3fjj8M3/Xexm8+u5x/TyGaU6tn0bvxWWh4lagh00gNM4UkifyV/2oOKVWIgsBDS6rp2BRinXc6XiOLR303Qzxjwj5xIeyOkxzDTndeLSXu1+lWc+nTkp9RQLelNZY9EbG8CdgGxu5BBDBTO0zg958HJcJCYKELPs4mIoaMXVB5IzyDdxyX0+MO8ee1R/lo1mZyRZOd3OTci4JEeSwIhvlaSLfiFGPMsHYywzp6D5hjain33zAdXjSfq4gcrL6T2io3ursD5cj6xLmedb/B0t9ArghXOw7xYmgRumGw43AP40epyTkRN2btZ1t0EuGU29TZHyS8Kan0WXVz7VHDDOiHHfvK5eT8haIfWdbi79GCU1QQvJ0oKb2bhnvfgBnw9QwGcfWbqaFS5TT0wVa0sJ+QNz09p/5oOzNLkgYcR9uTAeCkyEGukrZxVQ5siUxCVMIggWTPImZIZtNf68g6p2G02+qoMg4gCvDR0B/QhiqQ8isJRRQe+tUmHrA/T7ZdZmDh59jaDnnZNhRV55UtLXT0B/j49VNOen9je1+lKNjE/dlN9KZ8N9WWPait+1AbN7PeuYIXOkqYN7mIw61DRGMaNqvE41+5PFFzmIpEwK/G0H19GAUuAiu/D4CYXZgIrHXDYM32Nma411JSmMO+nCs50ubh3msnI0siiqrz6tYWFk0toTKe9vjDp/fS2R/gPz67jF27jpGqlxhhHwPeCJ54SvBdzu0stDXzA+/NeAJ2DF0jvOYxiIVRW/dw6GgnYd38zriEeI2eICFmF6H3N+MUYlwzv4p1cdJUJiU/1xPrcdICayWC1nVkVDWnoW2IR57agwD85+eWUZx3arXM0HVQwhgWJweb3UwZl4fNcvobeG/v68Jhk1k41STiWjzQbjpwgOKa5RTlOtB0ne/+YRc2q8SD984b8buxaX8XG/d1s3FfN088uHyEChv836/guPlB2uMZlppu0N4XpLYiB+XIhsR5esjDixuPs+addlZtb+O337h6xHq3H+7lly8d4ou3zWTBlNOrnRlLyTEMg0BYweJO/xuL7VuFXF6HPD594/D9hHo8WR+rNu04ayQnuvsl9GUrkHJOjzRnSE4GGWRwzrBiyTjW7ergY9efWMVzatSUZXPPNZPxBqPMm1ycqHUYxrmU4wVBICfLSk15Di83F1GYY2PQF8Uii2lNX4dxYvNKURAoyXfy4L3z6B6cQiiiUBdP87n9itoR4z9183T6hsJMjRPaovIynulbyieyNxLSLTwZvJzP3zoLqxbCPu0y8gtcDA0Fyc+2EQibO7KpStrweyi9/HbcFXW81mBw6fQS2PwIhL10qXnUKxXct2IKi6aWkGW38MSRO+nqSd81tFkkKmYsILb714CZZuSacw3d3fn8bKtKxEjurD8fWsREuZdL7Y28FF3MLLGZ18JzyBEjdGt5fGmmFcYgOesj05hnbTEJixIBSSaYPYEsj1lobY8rPsuzjuItWk7EE2ROYBfTHV3EDIkBLZsK2cOtzl2JOf8UuIRDShXfz38m8ZqKjEy6gtCuFpKTldylVg2JyqoKrDPnozS8nUZyLP1Jg4zL7I3Mr82Djr3Yu1VETu6+Bqab3pX2etZEZjOvMIQnYuAPaxjdI9O6hu9tl5Zvmg+kKHllkpd80VTotscms9x+mNxQG0pDcgde6200bcv7mwm89H22Bqey0NlJPtAuVFKGqTJ1vf57ylKue6C+jZnJdls0pJCcainpFLfA1oIUN764+/pZKG+uAczvold3kC2EOeEryZbBfG4xrDiFGLlCgOi2v+C88as09/ipUFrJs/shAva3H2PL0AeJklRJdh7pY9eRPhZMKeHjN4xOdrRgMjgslXzohoAoGKhN2yC+sz/L/zYvcEeiDg/MTYped5iWHh9D/ig3LB6XICa6J6noaYPtKK7kd14PDOINxvjj6iM4bTK9R/Zyac4mYh3wnMdKv57D+FIXV86t5NWtLby02fzvt9+4GlXTqW8dokoapHvzS+ze62FOii+GEfIQO/g7vpHTQLtWyGKbGczf6NjLU4ErUVv3Yvj7E+evenkdhxWzBsoVNyIRHNkYVrOu0ynEWDa3gs6BAEfaPFSnNGrWg+kulCf2itH6W0aQnKii8ccXdpAtqPgNB229/gTJCUUUnnmriWUzSkfUXQ1t/ity/WoOTvwEv3lHZc7EQh646/TS4br7PLg2/ZigYUed/C3EWDCRWif5unhtayv3rZhKW2+A1l4/dzm3EXjpdbKu/AQUJVM3/XEzkBLRS19XD9mj1NMp9Rto60uaO7T0+KityEHrTyrXuq+PXYNmKm2BGEAJB7A40s1NNuw1Nxs27Os6fZKTpuR0J9LRnnnrGK/vaOc/a1tIpZPK/lUoB14n66M/QrBlYQSH3lczAsPQUZuTDZLVtv0YSgQjGiS2bxXWOTe+q/4+hmEQ2/k8LL72tMdkSE4GGWRwznD38kncdnktFvnM3esFQXhf65veDa6YU0Fjh4cVS8aR5bCQ6xw9DU8e4/0OO/CdCgU5dgpy7InnM2oKeKmzhh94s7HmFDB+ZhVZE6ck5hzG0umltPcFcNhG3wkVRInCyXO4b7L53Kj5IbsPtPDzVS3oiEyuyiMr7hhmt438ubh2YRU2h53mnDlU+vZRMO9q5k4uQZ94A1fSTN24PGxBCTQF/75inu8cYvxVt1Km5PLjtUfT5squqUY9aD62zL4Rweqg3rmA36/cg9+wszK0gG9/bCZlLgPBnk04LPLk7/7E5fYGdgmzuKu4Edwd3DL4BHfkJVPRXggtYl9sHFfZ67k+XpukI7AzVouOSI+WS7EUIOu6L3DQ42Tn+g2Mkwa5xN5IQDfNMlwOC0GrA2JhrBV1icbA8uRL8PYO8NQ7AT7rehNRMIhgpV91US27ye3aOmajBsfND7LqjV0098e4o+QYRVPmE9v7Cjc593JVViNZRhDNJiLZTKJwOFZJieSlSDLTw6ZdcS23+at54e1m1kRmcWNKw1pZ0JGFGDoitZffhL6jnjx9CMMHUSzYUDDCPn7x5JvcVXAQm65yneNgorXRT9d7eTjPNPooCzakrVsJeokqWmJ3fdiuOD/bRhnJ4Cs11bCqsojWlFqm7dFJLLAepzCeKumVC9nhL2erO8Y9Bcm6E9VtEog+d4h51mQ6Xq4QZImtiY3RpCPkcGD61p5OhvxRIjGVz9wygzxXkqBG3L2kJo+9HZ3CfGtLmvtgthjBikKM9NS3//ub7YjolEtD5Me6KRo/if/6y0G+kF3P5PhbUwfaCEaS5MgIedmwtzNBmD6alVRKZ1g7ENGZtvsF9Jpv0tSVLCaPKhreQBSnEOEL2WvJOhbjLmd6Olhsz8vkhn3kyukqnkuMoGoGoe7jaV+9SXIvVZKbKtnNjmg8JdaeTX9IoADIsaqU0c8/ryjFb53B9t9uSb6P4FBaXUdkoBMJaFdN85XYwTVo/cexX/JRhOxi9jQO4O3r5cu251BsEg97bqdrIMiCOPd8dVsrG/d1sXFf1wh1w1K/CoCSo88Ct7KvaRBV0/n1y4cpzLFz99WmiUzfUIhdDf1cOrs8UfTf17CPSRaTVPj6eslRk59FuezlsvbfoDTdTU94HE4hwmX2o9ALvmcfIv/jP4B8899iTyBKrhDk3/JWoq5ajZZj/r1L4+agtZnpvErnIbr6k5t1LT1+09QjhRAa/n48/ggloo8Hc1/Gv+ogBbd/k80HuunoD3DLpRMSzZkPHnfz4C+2sHxeFSuWmFkGgbCCLxgb8RuR1nMrFsbwD9DotSScDQWfuRmlF4xHdMf/bgwdtWU3en8zSsPbOG76OvIoPereK3qHQuRqQ+Z9kCwIzlwM/wBqxyHUpu2ox3dgRINn5P46jNHMW06FDMnJIIMMzineDcG5UFGYa+fr957cqhXgw1dPpte9j5uW1ZyV6167sJquwRBLp89ifl3xmOddv7gaURSYMWH0eoITIYgyC+ZM4mOGg3BEpdKeEToAACAASURBVDLlx/WDl9bg9kWYUp3H0/HaqOEf4yl3f4mY38eSXPM6oihwW0KRMnfd/mmygtsXYVxpNlMMg7JCJ81dPp7faO5A20snMFzdIVdOR66exRzDwE8DBmb8XVZRmlCkimwGB6ljp28isycWYp09icj6X2PRwmiGQLtWSG/OTLa4qwGBjcJierTxrGADb0ZmoMdDwB/7buSOS6u4esJMivoCbI3WsRMVn+Fgb2x84v247v0RhhLh8ykNegVRouLyW5lhaeVnW2RcQojjSgkKMv88Z5Ay2cvTjdncKSUbjgp55YiuQuSKaSy7pYaKXj/ldcUIgO7pQm3ZTZYRBISEEgKwNTqZEsnLB5172KdM4NJZl5O731RmVofnMqhlUym7qZX7Ek5wclE1k2ZMYeX2S1nBJgwEfum/mnsKD1KidHJb6C/YIulOeEOaE5/hGKGyDCNLiOJ++xkKy0oxJl2ZaCh77fxKSveZwVeTUsJES9IMQrQ5KZaSLoCbo3VMkPsSJMe/8JO88trI2gIhOMB3frUebzDGg04zBeedaC2LbMe5ytnA29GpGIxc6LCt/n/+726+/cnFWC2SaaDgSa2jEtgrzeF4sIRPZG9MvGoVNOY7u3DpPhqVMlq15N/XP7g2MtfaBg2gHrVQJ19BsZgMOIdajvz/9u47PqoyXeD470xv6SGNJBAgnFBCl96kSBOwoYvrWvCqi+Wu2+42t7iWLbrFdct1i7uua19dXWSxIiggohTpB0JPAdLrJFPvH+9kUkhEvJQkPt/Ph0/0nDMzZ84zZ+Y8533f5yUUbnmfJ48d4WBMTeS4NTKiVaI23HqEftZSCMCufz/JyYaW5rGCIvWclzq3RSsVtu/q2dlcOckm9fpHjL3kAIXBJDLN5cxsV6ER4GBFmI8Lq1nsggExXhpXPAChILa0gdH5xgAIBQh7a9hREiCzlxt/eQku4CNfP7IsFdBUT/DoxzQGA+zXb+K3L+3gOvc6XHa17xnmSsJF22lY9S/MyX2oKG25WRUKh6M3hlqPA3JqLZ/LtduK+XCv+jwtmtwXh83Cs28XsK2gjH+vP8x3rhtFdmoMwaKWFs+6wn24zW2PUa9wGY1v/54ke1+WeVpuhJhDPvZ98D7JmapIQGmVlxyLagWzhJqgSrW27E2YzhsnJ3Fb05+wNNaSqlVQhPrOO1RcQ6hG7WPQbCcc9GMJBellqmagpQSLFiJctp9gYwOPr9yNRpiaen+bAhulVY08/05B9Hv1p09tob78JN+Zl0iv/IlomqaOUaS6pRbTi3BtKb7jBfx1jTqGbq0RR6iBMBqrTyQxq9VYveOb38HjLcEKHFj3OtmXDTylR8T/x54jlTz0zFaWDKhlMmCKz8CcPhD/zjcJFLyv5jwD6gs2sz/rOMNy0zp8nhOVDbz2wVFmjcni44Iy0hNdjMhNJlR+7Iz3SZIcIYQ4x3onu/nZlyeetefzOK3cftnQ025nNpmY08nYo08yfcSpJc9jXTbuulKNMUpPdpPgsUdbeTSTBXvcJydSHqc1OjDcpGkM6ZuInhVPZW0TenY8mtmCfcqNhCoKMWcOUc+raSyZPoDn3ylgQGZcmy53Jk0jO8XDvsJqslI8WHKH4TBb8GtW7nu1kpDFwdfmjoA/q3EoKQlOqrUcHihsu5/esA1XorpTm5aoOnn4sbDKO6LNdprN2WEFLpOmsWBCX8wmE8+/UxDZb4ibeBXOWAelJ7ewoeyYahmyp5K25AGaB1ElxztJbjVOwTF1GT5nDK6kXoT6jGf12xupPbyLmpCTHf4sTP7eHA70IqH/ECZrWvT4A3zo68+Hvv4scn4UTXLMaQNx2Cwsue1mvCUzWLHhCAcqwzxVbmKZpyI6XqkpbMGuBQiFNf5RPxnQWNuYxzTH3lPe7yXOHVCwg6YCCGx7nXviGnjCP5+JuR5MO3yEwrDGn09/69vqWLgT2wy+LwvHUhVy0xBuaZnI7JsFqCTnibopTLDvJ8tcjtPk527+BpFcu94cxwv14xhiPUaSqYZB1qJoF6xonAhFEh+Nk1VeDhRVE+uxs+rtrVwTVglZ0JOGo98IbAdT2XbUzov1XobYCqkJORlrP8jVjnWYCRIIm1jvmM5rx3sRGylp38wS9nOte0P0GAK4yg38rfbF7a/EOHCckbZC5ju3YdOC0fFj/awtXcnSvPtZFKhli60vW3057D1SSZ5vB5McqrVzlXcYsxw7sWqh6BgrdSzjOeqLY5S95UI2yVyPR/PiaTwJZjANngX7X4RQS8va8Mj7KG+y4A2r2KR6D0bXB0sMQphY26gzyX0EW7CB4g0reWxzAlarlfs8KnnY2tSHy10t3ZKCRbt4v/EoaeYqLrK3PF8fSxmjq3YTrKojeGw7Q9wT+QDVIlNW5SUhxk44DFply1gSt9aElQB+LKzZ2jJ+rLisgawUD9sPlGPHzzDtAI+/YuJ7yyYRW3OgZV9OFNDQdLzDi9z0psO0a6ijoeQgx8vrefqf73FJxb8IOdomz76wmf99p4wAZvZ6UhlqKyTPWowrPoljlQHmN66g4Z9q/wubPDg0P6nmGr4T9+/oc2iEKdvzIXfHriLJVMfPd1/KKfXogYbKMmx2G8Vl9dwfvxLnxkaCcS7M2SMo37sZO2qeNV9SHo7aUgo+3saJClVUJsWnuhLWmmI41uhp8z4TvC1JQkylwZMvruOL9new5c/GOrAlyV6/o4QdB8v50hy9zXfM6TQXBqooPAIuVdTCkjVMJTmtuq/Z8RGz9mH8pqux9LuoTe8DfyDEdx7bCMCWfaXRFtrpI3tzTWoXSHJ0XU8EHgQuBWKB7cC3DcNYd7ZfSwghxPmX3+/sVEqymE1txk/YBk0/ZZs5Y7NIjLW3KZfebNrI3lTV+Rg/OBVN07D2H4cV+P5/+dA0DVeru5QOqxlnJz/Y8ZExN1ZL2259U4dnfOqqUHl9WgpjzBiZGe1emN8/iX8eHUu5lsBVVyw8ZRB3a5rDg/vim0lIcFNZWY8/fTgv71YXQWaTxk9unchbmwuZPUbdCfc4T/0JX+kdiT++D4tHJ2EdoKYtNWka7ox+pPW3Q4HB4UAvHqxezBS7QZ61iFXeEczKNfHafo3DAdVy8VLDWF5pGM0vE5/qdH8tdSfoZYZvmJ+Dl54DoCLkYXtjBva5N0HQjyVnDKASOP++dTxWoBLlYLjlOMTExjAkJ5FdhyrY4suhMmkYY6rfVN2JIqpDThon3krmVi9b6/KYxA5ui1nNsUAiNi3Aukad/YE0bvWspiFsY1PTAEqCcWzbn05ywQquMe8GoNYUR8a1PwUgpXIPe49W8W7TINb5BvPTG/Jg1b2YIxOuWrQQ05pWMzzOycnIRL5FzoE8UjSaH8X/M5rghK0OAj4/Vk2NvXvSP4drLW9g1wL8PPGZ6HsIo/G7mktY7NrMAGvLuBaH5meY7RjDbMcY6TsCe2xkm9QF4+vefF7zjuCgP5V5CQf4oC6VpZ73KQvH8/vqGYyyHWIULUkOwL3xL2LRVCtg7thJhHIyqF7zBLbGtkUkasNOZkzIg+0b28Z14BQ2mUfx8vpK8t0VJNNA3ME3uNGTzruNqotgjRZLdbiDrrbHtjLRXtpm0Tznx9Ey8wBx3iKIJDmHj9fy6xe2EwiG+PqYhuglv1kLk20p50AgleNlNVzvXk91yEVhaR4+f5BwOMSymLXkWYt5v/EEr62NZWq4NFqEJblYXXIGwiaOBpLaJJWtHfL3Isdaiqu+mD+8uJ1eRzfR11V2ynYF/jQCkeIyu/29GWorZJFrC2FtB1q8v822ZcEYUi0dt7S5PvwrfSOn7TTHHlZ4R3PJRVm88aG6gHdpTfj/dQ8BTWO2Iy/aldJ/ZBvBsiPYN6sKKIEQvLAzxJc8kFWxiVE2G+NnL+DAWtW99FhjDEWhlhs6+/xpDLS2tJbGmBoZXvEmIVsRlZteJZQ8irREF6FwmL+sVC1iVouJmxe07dJWVFqHw2YhKc5BexW1al9TI/OymeLTMae3HR9XE3IQa2okOaRa1SwHRuOYfSeaprHnSCXPvNUySXNtq4mS120v5qpRXSDJAZ4FUoAvAKXAHcAbuq6PMgzj1NtCQgghRCc0TWPsoNQO100YksaEIad2eYhxnVq212oxE+duWT5iQHK0W1N8TMflb2+cl9fh8o5kp8TQu5cbvz/E5VNzostnjMzErGlcNGgqtk5epzNJrcZhpSa6SI538oWZudFl7lYlk4f2S2TnwQqCmAlmjsI2NJf2clsVxcjJTsXwJvLmyTrsVjMjF0zm8HuHSKrystlQF4SLp+bCzlP3q7kcNLSdpBegJuRkWP9kbHltB4tb86ZizZvKyZ+qrntN7eYbWjZ/EF//3XoAbpw3CFNjOhVbXuGt4hjKGkwUBxO4t+8AvjXISrAmC98L3wJQ3aWAK90t1ZwSqSfTov6/9sA6YswtY248vVsKe6QmtNxFz0h2kZyWjm/MFTS9/zRbmvoSiklhhLaP+KYq4iMJjWnoXJqKqljbNCg6DsqSnkdj7jy2b9nG+iNBDgRSWRjvIF5TjykLekhMTsKRN5FEI53HD3j477g3Sdaqo8ex2fBWrUVveYfwn0iL4r5AOtctXEzlm/u4ryiVypCbIGbq7MmnxCf6nDYnJmcspuzheOf9mB8+/h4PxD8XjZczNp5+Iy+ibtfT0UlgHbPuwNrvIjIKq2B9JaWNJpIjH7M8awmJVpWsJOaNJrvAw18qprM4o5i4XilYD67jMscH2Ewq2QvmTMJ8aH20q93+QDq5lhKSgyeBMIOtRWzerHG8QnXZKty3p83E0oOthRwIpDLFYTDafhiAtUWHOF6RyiS7QZ5VdT+c4CigZv8fMJlo09IF8M+Gsez0ZTHNsYd3G/NIN1eRYyllXqRU/ntNOjnWUuL9JzhyvJrRlnI6stffMjVBoXsQYe0jtHAQLeQ/ZVufM5mMQYNh1386fK5mE+372MAorp4xgCun9eN3/9qJ5dhHmALq83qpq6XcunfPOixaMNo5syiQyJHIDQmTFuYGz3tYTkCydR8E4VgwiXHj8nm/Npa3d9XQELZxd+wqkk11HA/GkWGpYnCkoqS9/gQ/e3YTX1k6luLSlikF1u84Tr03wJTh6YwYkEx1TQOHn3+IajyM/9JdbcaJnqioZ3hwByNjDkfHRRX6YkgPmND6TyRYsIHVjUP4oGkAS90bqAk7Ge4oJnB4M/69a6nrPZ7fvrQDb5NqcbQSYLpjD9t8fSgNxeIO1RM4XoCGan3/tO1LZzXJ0XV9ADAbmGQYxobIsq8A84BrgR+czdcTQgghPsnMUZms2VbEZVNyWPtxy5iMy6bkRJOc1slP37QYDh+vJeEMExKTSePeZWMJhcJYzC2tFHabudNy5aeT3OpuaUYHk+e2nhdm/rg+LBjfh427T7B4cs4p24LqZtisf+84mnxBjp6sY1CfBKwWM1dfPICGRn80yUlJcOK64l68W1bykW0s+e6TbD3qZas3i/41m8DfyH5/Gkv6VdKrTFWuc/UZyk3TO08O8/slseNgOXtiJzCBIqx50wBVuOAnt42npFx1RwIPZN9B9fPbMA6qRCbObUPTNCwJqYT6jydwYCPWobMxeZJo/PAltKCPw4FkakJOBsXUYm2qIsbUSEPIhjZ4Fp6aQ9iGXxLdl5SElq6C6Unq2NjyL8GUnoetxMyArESaKosJvvETrAQozb2MnPwR8Poa3vTmUxNyccPC4Viyh+OyuUjLzaPwjX3UHyzH43SCVyU5P6teyG9vnY3FbOK/86HOOwgtdDHvbtpPaNfrTLXt4nVvPrvDA7g7v5SNe8v4wNuXQ4GWClixLiuZKR6+9cVR3PdEkLISNfYmPScXjr4JgGPazRQ2ukj+4FEANHPL5zot0UVD2M7hQK9oq8aEqePQ7G4sfUcSiJQXb77z3ic1Bk0DM23n30pBxcKSNZS5Sb3547/rKDjeD91k5/LQ5mjrlhabQuzYRdQfUomrL2zm2bpxfC/uFTyal0XOzcx07qa81sMR00ycmo+Y6gNggZ2+TIbaCpnh3E3YbGWSZXf09bWCd3mzYQw/jG9biTHW1EgoDM+xgEuDbxNvquflhjG836TSpjWMoy7spybgolhLYVywAB8Wtvn6sDS8AYfm51aeJ83Wcan3vX5Vfe3ikb350hydhpUfEixS45xMiZkE66vRmlRMxowZSuyQCQSz8vDvXUPg8JY2z/Wn2otZ5NpMqrmGm/ofx6RpmCxmslI8JBzvuJR9cyvhTl8mJcF4dvt7UxaKoSLojs51Ftj3HkmoCYvtQ2aycEo/PtjtpnSHOn4PVV9KnMlLpqWcGz3vRZ/bpIVZEHqbpx4/zE5/NnZ8JJrrKQkmsK2gjG0FZSyc2JeBpmMMi4zxeWLlVu74wvhoV7PC9StZ4m47P8/j6yopWfsuGv1xalnRLqqP1M4D4EuJRxlTt4am95/hKUsYb1OYfhmxXDcjm49efJI5zh1Mc+zhz3XTuc3zNlq9nxAajWErn3bWn7PdklMGLACidToNwwjruq4Bn27kqxBCCHGWXDs7lyum9cNptzBjVCZb9pWycGJfslI8zBjVG5vV3Gbw7fLLhvLye4eYN+7MExOTpmEydzJi/zNIjG1JtDqaYyTeY2f2mCzMJk2Na9K0U0rytt+/pTNz2X6wnLljs/AFQnh9Aea2SsJcDitDcxI5erKOITmJmB1WPJfczvTI+lkXqVISh0ryuO8J1c/eN3oB7pQbCBzYxIDcCWj2zhPEm+bnsXZbMVOHZ+BxX4zWau6Z1ARXm9YVUK11Ow9W4HFa2/Tdd0xbRnj0ZZjiVUuedchMQg017NtcSa8EF+Qk8rPHXiXbXM4xl859U6fTXkqr10pvlURakrOZEGkg8Xty+G71QmxagLtGXILVYsJpt+BtgiMxI7EOGNdyfE0aX106ioqKOrx7w5S89Q+erp+ID2ubxFclp1bmXTyM4OSBHDd2s3OTn6tn5BLbN5GTQYNDW9pe7LaeW2xA73gORZKcYSN0iDT+aI4YcvQRBBLuxrv6j9guapns1WI2MbhvAs8XT+Nbk514+gzGFK9aJ+yjLyNwZBvmlH6YIpNG2qxmNDRe8w4jyVTLm435LHRtxR2ZNNSSMZixFgevbjhCcVk9Ww8FCFnHclPMu5gTe+OYfgtabAqaK55wQxU1+UuJK4jneJ1qRZjpVBfeSeY6vhf/SnQ/G0JWnqsfj8b7DLEVMdu2rc1xuMh2kJqQiziTF82dgHPu1zix6jECtRW8789j0pyJPPyyAzMhmkxOfvOVydQ2+HDaLfxt1V5mj8kiI9nN0aIh/P7lXQQxUxRMpK+ljDTzqQmOpd9YNGcsJ95TraDNZfztF11Jw/F92PLnYB97FeHGOur+ficAsSmpaFY7luxhmFJywGzlRFw+W9ZvpC7sYKc/i0X5abD7GbKK36RxfZjA0W2MShiBw6ri/puaOfjDZuJN9dwc0zL3zp6kmewot1LtVS1vv6qZh00LcPv0BJL2PA9N9bhHzmXRWNWSmp3aMpHrxJF9WbO1iGrfqd8lzd0lf1E9n2WeNSSYGyjIWcKxpjgKjANk73yTJGurCoDF+3j0RTf7C6u468ph2Ao/hHZFPEsjc1GF0dqMwWv2j6OZJMel0pcTXO17hhzPQCa76jGvOsIcp2qNjDE1clfMG1i0EEcDSbzcMJpvd1BspDNa86yv54qu60uA54FFhmGsOMOHHwRyamq8BIOh024suhaz2URsrBOJX/cjseu+JHbdW+v4BQJBbnhADeC/clo/Fk85dQ6lcyEYChEO0+bCvCOrNh7h2Mk6br50UIcTZZ4N4XCYD/eeJDs1hrQzmEQ4HA5Hj92k/DRuW3xqoY4mX5Bbfv4OALdfPpTxHXR9BDUeoKExEG2RO3qilufeLuCamQPaXES2P/euv/+t6Lq/3/Pp5/Y4VFLDD//S9q74uMGp3HFFPgCHI+uz02L48c1jadq6kkDpIdyzlqOZLdH3337usGAoRJMvhMtx6v3tkLcGzWJHs7ZcjL7y3kFeXHuQ2RdlsfNgOZePimPI8RVYUvvjHK8qke04UM5Dz6huVXFuG7++bQQmhyeavAYrCgl5a7D2HsyhkhoKnv0FY+yHTnl9iAzur51JbUwO9VWVfGXgEcy1JWypjOOdxsHcGfMGvS0tJZqdE5fiGDGPQDDEqo1HGJKThM1q4ruRgesjBybz1atHdPhaJysb+MbvVJnskXGVTA5tajNOqln88ifQNI2DxTUcKqlhxqje0ePafP3c/P/ej14hVFmMa+ataKa2V/zhcJh/rzvErkMVZKZ4uG52LrXPf49QZTHtNYSsfK/qmmgFyEcS/x5dF7f8CX757Da2H1Dd6uI9NsYNSWPprFzw1hI4eQBr9vDo8Q+Fw/zuxR1oJo2pwzN4OBKr78e9FC1H/1m85R3CCu9otU9aAz9O+CcARX0X0PvwSooD8QTm/wCn3cL9kZshYwelEAiGGZGbzF9X7iEM9DLV8D9xK7Bpwc5eCoA9/nT+Unsxfiz89fuXkBzvPASc9gvxnFZX03V9EvA48MpnSHCiYmNPP0uu6Lokft2XxK77kth1b83xG9o/iZ0Hypk7qR8JCaefU+l8unbe2Z9noyNzJnpOv1EHlszMZd22Ym5ePIyEhI7Ph/QkNyXl9QzTUzs9vguntR3flJDgZnhexwkRtMQuJcHJyUovcR7bGcUuIcHN9fMHYTZp/PVV1eIR67FHnyMhwc2vvjqNpDinGk8285pP/dydv+ip+3f9pUO5fMZA4jyt78K3nbl+6hg3H+4rZc3mQpbOySO5d3rbJ0loGXgeH+/iJV82Y+yH+Kgphzlf+z5bHrsPzRnL8KXLeeTZrRyr8/HrWyZQU+9D75PAi6v3s/I1NZzbPP1WQut/gSkcwJkznNTJCzFFkrLrL1VJbENjyxiZySMyOz3unpiWrqBT5lzMb55P4OuxK8m2lGNyxhDy1mJNyiAxUX32Rie4GT0kvcPnir7V2dd+4vobF+W33YfLv0r1phWEfF5CTQ00Ht2D2R1Pw8DLCb2l3sd1c/M4dmQqWSfeJWXx3XgSPWSnxUaTnLuuGcnYwc2fRQ+0P/7AD26ZAMDR4y0tMa86FrM8cyfuQRMoW/VHCLfcEAs547FoIUINNWhmK6FQCC3cNgkZaivkI18/HJqfQZHWJ39iP3LnXsOvfuHHkZTKj8Zko2ka18+v592tRdy+ZARJcercGDUojTqvn3v//D6PNl7G3ZNMeCoNfCePRCft9YXNNIatBHrp/Gn/UIKYGT80rU1FytM5Zy05uq4vBp4GNgKXGobhPc1DOiItOd2Y3FHuviR23ZfErntrHz9fIEiDN9BpcQTx/1NUWkd5TSPD+p86gP9MtY/d0RO1PPvWfq6c3p/+veNO/wQdaG4NWnJxfxZO6nis1YUWDIU4XFJLv4zYU1qP2nvhnQLe3rCXWRPzuOriAW3WhcNh/IEQNmtLK0htg48Hn9zM0H5JfHH2QAIlBsGKImyDpp3SWtLsJ09upqquiXtvHovD1vm9/Edf3M7JSi8/uPEivvvHjdRWVnCbXsrwuYsJ1ZZiik3B5O68++fZFmqsRbM6afCHWf6w6qL2yFemEO8yE6otxRzpXvjaB0d5OjKZ8s+WT4iOJzudhsYAX354DQDD+ifxjaUjAQhWlqDZnNQ8fw8EA8RccQ+aIwb/0R3Y+o0Gq53/rFjD2GN/pxY3CVpth89vn3oTrqEXU1blxeWwdthi2F5VXRNWi6lNqerAiYMcePVxniodQpUjg2ULhvDL51S3xS9eMpAls3TMZtOFa8nRdf1O4BHgJeA6wzCaTvOQTxQMhggE5Me6u5L4dV8Su+5LYte9NcfPhIbHaZVYniPN44DO5vFtjl1GkpuvXaO6S33W5182fxBb95cyY2Rml/4M9EmNIRhsnra3c5dNzmFQdgI5GbEdvh+TprVZ7rRZuO9mNe4pEAhBr1zMvXIJhoBQx8fjm0tHRicZ/aRjtnzxUNWtD/j+DWP4+GAFg/N6EdI0cMQTAkLn85hb3BAGuwW+ds1wGpuCxDitBMOAJzX6XpIjVc1MmkaCx/6pPxdWs4bdaqbJHyS+9eNiUgkDrqvuByDsjCUMmAdMJAgQhFlzp7JhUwoZGcmEtz9JuGgHfiwEwyZcJh9brKOZqk8lEAgRH2n5+zT75YkkN222TerLrv43cbjkEAPiXCS2usGTe4Y3C87FPDnLgUeB3wBfNQyj656VQgghhBBd1ORh6Uwe9sndpLoTTdOig/fPJdNpWpSaNbc8xbptLJran8rK+i6RTA7N6Xx+rr7pMVjMpujfT0vTNOJj7JyoaOiwemRz0YmOmE0mpoyPdE/N/jo/f2ozhaV1XD45mz27D3LVwgmnbcU7E7lZat4xPTuelAQn2SkezGaNzF5n1nX1rHZX03V9IKqq/qvA7e1Wew3D6Lg2X+cOAjld5UMnzozFYopOaifx614kdt2XxK57k/h1XxK77qu7xa66rgmH3YLd2nGXvc48/OxWdh+u5Kb5eUwZlvGZX98fCOIPhHB1MsHy2VDn9eN2WNoUetA0jcRE9wXrrnYVYAUuj/xr7QngxrP8ekIIIYQQQnxutC0G8ektnpxDaqKLMXrK6Tf+BFaLGavlzBKsM9V6HjDgM7UUndUkxzCMB4EHz+ZzCiGEEEIIIf5/cjPjyc2Mv9C7cd6cm8L2QgghhBBCCHGBSJIjhBBCCCGE6FEkyRFCCCGEEEL0KJLkCCGEEEIIIXoUSXKEEEIIIYQQPYokOUIIIYQQQogeRZIcIYQQQgghRI8iSY4QQgghhBCiR5EkRwghhBBCCNGjSJIjhBBCCCGE6FEkyRFCCCGEEEL0KJLkCCGEEEIIIXoUSXKEEEIIIYQQPYokOUIIIYQQojgmxAAACQJJREFUQogeRQuHwxd6Hz6JF3AEg6ELvR/iMzKbTUj8uieJXfclseveJH7dl8Su+5LYdQ8mk4amaY2A83TbdvUkpwqwAyUXekeEEEIIIYQQF1Q60ATEn27Drp7kCCGEEEIIIcQZkTE5QgghhBBCiB5FkhwhhBBCCCFEjyJJjhBCCCGEEKJHkSRHCCGEEEII0aNIkiOEEEIIIYToUSTJEUIIIYQQQvQokuQIIYQQQgghehRJcoQQQgghhBA9iiQ5QgghhBBCiB5FkhwhhBBCCCFEjyJJjhBCCCGEEKJHkSRHCCGEEEII0aNYLvQOdEbXdRPwQ+C/gARgHXC7YRgFF3THRBu6rt8DzDIMY3qrZSOAR4AxQDnwG8MwHm61XmJ7gei6ngg8CFwKxALbgW8bhrEusn4G8HNgCFAI/NgwjCdbPd4B/AJYAjiB14A7DMM4eT7fx+eRruspqGM/F3Xs1wLfNAxjd2S9nHfdgK7rA4EtwJ2GYfwtsqwv8FtgKuAF/gZ81zCMYKvH3QF8HUgHtgF3GYbx0fnc988rXdf7AIc7WHWLYRh/lnOva9N1/Xrg20A/4ADwI8MwXois64ucez1WV27J+T7wZeAWYAIQBlbpum67oHslonRdvxv4cbtlScCbwD7UF/4Pgft0Xb+p1WYS2wvnWWA88AXgItTF1hu6rufpup4HrAT+A4wAHgP+quv6zFaP/wNwCXAFMBPoD7xw/nb/c+3fqOM9DxU7L/CWrusuOe+6B13XrcBTgLvdsteBEDARuA11MfyDVtvcgLr5cA8wGtgPvK7revJ52/nPt2FAI5CButBt/veUnHtdm67r1wGPo37PhqJ+A5/VdX2CnHs9X5dsyYmc+F8H/scwjP9Ell0DFKMurp69gLv3uafrem/gz8AUwGi3+lagCVhuGEYA2KPrei7wLdQFs8T2AtF1fQAwG5hkGMaGyLKvoC6arwVSgY8Nw2j+gjd0XR8FfBN4OxL364EFrVp+vhDZbrxhGBvP7zv6/IhcSB0C7jcMY1dk2X2ou4pDgFnIedcd3AvUtlt2FdAHGGcYRhWwM9Jq95Cu6w8ahtEEfBd41DCMpwF0XV8GHERdkP30vO3951c+YBiGUdJ+ReRmn5x7XZCu6xpwH/ArwzAeiSy+T9f1ycB0oC9y7vVoXbUlZwQQA6xuXhD5AG5BNSmKC2sUUIm6u/VBu3VTgHcjX/bNVgN65MtDYnvhlAELgM3NCwzDCAMakIiK3ep2j1kNTIn8WEyKLFvT6vH7gCIkdueUYRjlhmEsbZXgpALfQHUp3I2cd12erutTUXeKb2i3agqwJRKPZqtR3UmHR+I3kLaxCwDvIrE7X4ahzrOOyLnXdemoRObp1gsNw5hjGMZPkHOvx+uSLTlAZuTvsXbLi4Hs87wvoh3DMFYAKwB0XW+/OhPY0W5ZceRvNhLbCybyRf6f1st0XV+C6gL1OqqVpqO4uIAkVOzKDMNo7GAbid15ouv6H1HdXpqARYZh1Ou6LuddF6brejzwJKov/7F235uZdBwXULFpvnjuaJsRZ3lXRcfygRJd199DXfTuB+4zDON15DevKxsY+evWdf11YCQtLeIrkHOvx+uqLTmuyN+mdssbAcd53hdxZlx0HDdQsZPYdhG6rk9C9VV+JfKF/2li13598zYSu/Pn16i+//8AXo50KZTzrmv7A/B+c5eXdiR2XViku9lA1N39e4D5wIeoMTUzkfh1ZbGRv39HteZcArwBvCKx+3zoqi053shfe6v/BvWhqj//uyPOgBcVt9aavwzqkdh2CbquL0Z96W8ElkYWf5rYtV/fvI3E7jxpVU3tVtQg5juR867L0nX9S6huMfmdbHImsWu/jcTuHDMMwxdpiQtExmgAbNZ1fRCqy6ice12XL/L3IcMwnoj897bIjaGvIedej9dVW3KamwYz2i3PQPVBF13XMTqOG6ixGxLbC0zX9TuBl1Bd1+YbhtH8Rd5Z7OqA6sj6pA4qAknszjFd11N0XV+q67q5eZlhGCHUOIHeyHnXlS1DFfU4put6na7rdZHl/6vr+i4+OXaFwNF2y1pvI7E7DwzDqG+V4DTbQUt3Jzn3uqbm49u+O+EuIAc593q8rprkfAzUoKpfANE+zaOA9y7QPolP513UQHVzq2UzUZVpTiKxvaB0XV8OPIqaF+Cadj/c79IqLhEzgfWRC+p1qO+MKa2eT0ddZEvszq0MVMvbtOYFkfKno1CJjpx3Xdd1wCBUH/7mf6DK1M5HxW6UruuxrR4zE1WF7WPDMEpRVSynN6/Udd2CGvgssTvHdF0fFklOJ7dbNQZ1sSznXte1FXUejW+3PB8oQM69Hk8Lh8MXeh86pOv6A6hKNMtQk3A9hKqSkW8Yhq/zR4rzSdf1vwF9mycDjVQj2Yua0+PnwFhUf/QvNzcXS2wvjMgkhDuBV4Hb2632ou5KbgV+iZoQbQGqROYcwzBWR57jKVQXqWWo5vrHgGrDMC4+D2/hcytS3W4V6jy5BVXd8HvAHNRFcyNy3nUbuq6HgZsMw/ibribY3YkazP4t1B3mx1ETSt4b2f4W1GSTy1HjQb6NKv0+yDCMsgvwFj43IhN5bkDNbbQcVaXyVtR36EXACeTc67J0NWH5/6CO/ybUHHE/RiUzG5Fzr0frqi05oO5y/QU1H8t6VJWLOfKF0LVF7lzNQZVu3IKaGO2brfrDgsT2QrkKsAKXAyXt/j0SKU+8CHV3eRtqHoAvNic4EbcCbwP/Qg3g3Bt5XnEORUp9X4MqZfoc6sc6EZhiGMZROe+6r0i1wrmAGVWS//fA71DzezRv8ydU/O4HPkJdIM+Wi6xzL9KKvRB1zr2AuhE0DnX8d8i517UZhnE/8CPgAVSr9xLgCsMw1si51/N12ZYcIYQQQgghhPgsunJLjhBCCCGEEEKcMUlyhBBCCCGEED2KJDlCCCGEEEKIHkWSHCGEEEIIIUSPIkmOEEIIIYQQokeRJEcIIYQQQgjRo0iSI4QQQgghhOhRJMkRQgghhBBC9CiS5AghhBBCCCF6FElyhBBCCCGEED2KJDlCCCGEEEKIHuX/AH1SWlimcRE3AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 1000x500 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "info = mdl.get_training_info(model_id=1234)()\n",
    "_, ax = plt.subplots(figsize=(10, 5), dpi=100)\n",
    "info.tail(3)\n",
    "info.plot(y=['train_mse_loss', 'val_mse'], ax=ax)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'python': '3.7.4 (default, Aug 13 2019, 20:35:49) \\n[GCC 7.3.0]',\n",
       " 'system': '#60-Ubuntu SMP Tue Jul 2 18:22:20 UTC 2019',\n",
       " 'numpy': '1.16.4',\n",
       " 'torch': '1.1.0',\n",
       " 'xenonpy': '0.4.0.beta4',\n",
       " 'device': 'cuda:2',\n",
       " 'start': '2019/09/17 20:55:56',\n",
       " 'finish': '2019/09/17 21:03:04',\n",
       " 'time_elapsed': '5 days, 15:33:23.552799',\n",
       " 'author': 'Chang Liu',\n",
       " 'email': 'liu.chang@ism.ac.jp',\n",
       " 'dataset': 'materials project'}"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mdl.get_training_env(model_id=1234)()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "nbsphinx": "hidden"
   },
   "source": [
    "Getting download url can be done in a similar way."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>etag</th>\n",
       "      <th>url</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1234</td>\n",
       "      <td>9274418b5ee2026ea8714b7edc7d012e-1</td>\n",
       "      <td>http://xenon.ism.ac.jp/mdl/inorganic.crystal.e...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>5678</td>\n",
       "      <td>c5a962fce76a773b208cc59631999a25-1</td>\n",
       "      <td>http://xenon.ism.ac.jp/mdl/inorganic.crystal.b...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     id                                etag  \\\n",
       "0  1234  9274418b5ee2026ea8714b7edc7d012e-1   \n",
       "1  5678  c5a962fce76a773b208cc59631999a25-1   \n",
       "\n",
       "                                                 url  \n",
       "0  http://xenon.ism.ac.jp/mdl/inorganic.crystal.e...  \n",
       "1  http://xenon.ism.ac.jp/mdl/inorganic.crystal.b...  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mdl.get_model_urls(1234, 5678)()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The output dataframe contains the column named `url`. If you only want to get the string of `url`, just use `queryable` specification."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>url</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>http://xenon.ism.ac.jp/mdl/inorganic.crystal.e...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>http://xenon.ism.ac.jp/mdl/inorganic.crystal.b...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                 url\n",
       "0  http://xenon.ism.ac.jp/mdl/inorganic.crystal.e...\n",
       "1  http://xenon.ism.ac.jp/mdl/inorganic.crystal.b..."
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mdl.get_model_urls(1234, 5678)('url')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Also, if you don't want to get a dataframe or you want to control the output type yourself, you can set `return_json` to `True`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'url': 'http://xenon.ism.ac.jp/mdl/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3.tar.gz'},\n",
       " {'url': 'http://xenon.ism.ac.jp/mdl/inorganic.crystal.band_gap/xenonpy.compositions/pytorch.nn.neural_network/290-168-132-111-1-$Nbe3TKMYM.tar.gz'}]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mdl.get_model_urls(1234, 5678)('url', return_json=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can use these urls to download models yourself, but we suggest you to use `mdl.pull`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\u001b[0;31mSignature:\u001b[0m\n",
       "\u001b[0mmdl\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpull\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0;34m*\u001b[0m\u001b[0mmodel_ids\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mUnion\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mseries\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSeries\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mframe\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m    \u001b[0msave_to\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'.'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
       "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mframe\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
       "\u001b[0;31mDocstring:\u001b[0m\n",
       "Download model(s) from XenonPy.MDL server.\n",
       "\n",
       "Parameters\n",
       "----------\n",
       "model_ids\n",
       "    Model ids.\n",
       "    It can be given by a dataframe.\n",
       "    In this case, the column with name ``id`` will be used.\n",
       "save_to\n",
       "    Path to save models.\n",
       "\n",
       "Returns\n",
       "-------\n",
       "\u001b[0;31mFile:\u001b[0m      ~/projects/XenonPy/xenonpy/mdl/mdl.py\n",
       "\u001b[0;31mType:\u001b[0m      method\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mdl.pull?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "nbsphinx": "hidden"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 2/2 [00:01<00:00,  1.49it/s]\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>model</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1234</td>\n",
       "      <td>/Users/liuchang/Google 云端硬盘/postdoctoral/tutor...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>5678</td>\n",
       "      <td>/Users/liuchang/Google 云端硬盘/postdoctoral/tutor...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     id                                              model\n",
       "0  1234  /Users/liuchang/Google 云端硬盘/postdoctoral/tutor...\n",
       "1  5678  /Users/liuchang/Google 云端硬盘/postdoctoral/tutor..."
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ret = mdl.pull(1234, 5678)\n",
    "ret"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The column named `model` contains the local path of the downloaded models."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### upload model\n",
    "\n",
    "Uploading models is not yet availiable until we open the public registration. If you try to upload models, you will get ***'operation needs a logged in user and the corresponded api_key'*** error."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "operation needs a logged in user and the corresponded api_key",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-18-f862c734ea61>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m     13\u001b[0m     \u001b[0mtraining_info\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     14\u001b[0m     \u001b[0msupplementary\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrue\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpred\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 15\u001b[0;31m )(file='data')\n\u001b[0m",
      "\u001b[0;32m~/projects/XenonPy/xenonpy/mdl/base.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, file, return_json, *querying_vars)\u001b[0m\n\u001b[1;32m    104\u001b[0m         \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mret\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjson\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    105\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0;34m'errors'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mret\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 106\u001b[0;31m             \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mret\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'errors'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'message'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    107\u001b[0m         \u001b[0mquery_name\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__class__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    108\u001b[0m         \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mret\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'data'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mquery_name\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlower\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mquery_name\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mValueError\u001b[0m: operation needs a logged in user and the corresponded api_key"
     ]
    }
   ],
   "source": [
    "mdl.upload_model(\n",
    "    modelset_id=2, \n",
    "    describe=dict(\n",
    "        property='test2',\n",
    "        descriptor='test2',\n",
    "        method='test',\n",
    "        lang='test',\n",
    "        deprecated=True,\n",
    "        isRegression=True,\n",
    "        meanAbsError=1.11,\n",
    "        pearsonCorr=0.85,\n",
    "    ),\n",
    "    training_info=dict(a=1, b=2),\n",
    "    supplementary=dict(true=[1,2,3,4], pred=[1,2,2,4])\n",
    ")(file='data')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### retrieve model\n",
    "\n",
    "You can use `xenonpy.model.training.Checker` to load the downloaded models. For example, to load the model with id **1234**:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xenonpy.model.training import Checker"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/miniconda3/envs/xepy37/lib/python3.7/site-packages/ipykernel_launcher.py:1: FutureWarning: `item` has been deprecated and will be removed in a future version\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Checker> includes:\n",
       "\"final_state\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/final_state.pth.s\n",
       "\"training_info\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/training_info.pd.xz\n",
       "\"model_class\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/model_class.pkl.z\n",
       "\"init_state\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/init_state.pth.s\n",
       "\"model\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/model.pth.m\n",
       "\"splitter\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/splitter.pkl.z\n",
       "\"model_structure\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/model_structure.pkl.z\n",
       "\"describe\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/describe.pkl.z\n",
       "\"data_indices\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/data_indices.pkl.z\n",
       "\"model_params\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/model_params.pkl.z"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "checker = Checker(ret[ret.id == 1234].model.item())\n",
    "checker"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that the random string *$WEnkZ6e3* in the file name is a magic number to guarantee that each model has a unique name.\n",
    "\n",
    "To load a model into python, call `checker.model` property."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SequentialLinear(\n",
       "  (layer_0): LinearLayer(\n",
       "    (linear): Linear(in_features=290, out_features=180, bias=True)\n",
       "    (dropout): Dropout(p=0.1)\n",
       "    (normalizer): BatchNorm1d(180, eps=0.1, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (activation): ReLU()\n",
       "  )\n",
       "  (layer_1): LinearLayer(\n",
       "    (linear): Linear(in_features=180, out_features=177, bias=True)\n",
       "    (dropout): Dropout(p=0.1)\n",
       "    (normalizer): BatchNorm1d(177, eps=0.1, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (activation): ReLU()\n",
       "  )\n",
       "  (layer_2): LinearLayer(\n",
       "    (linear): Linear(in_features=177, out_features=162, bias=True)\n",
       "    (dropout): Dropout(p=0.1)\n",
       "    (normalizer): BatchNorm1d(162, eps=0.1, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (activation): ReLU()\n",
       "  )\n",
       "  (layer_3): LinearLayer(\n",
       "    (linear): Linear(in_features=162, out_features=46, bias=True)\n",
       "    (dropout): Dropout(p=0.1)\n",
       "    (normalizer): BatchNorm1d(46, eps=0.1, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (activation): ReLU()\n",
       "  )\n",
       "  (layer_4): LinearLayer(\n",
       "    (linear): Linear(in_features=46, out_features=32, bias=True)\n",
       "    (dropout): Dropout(p=0.1)\n",
       "    (normalizer): BatchNorm1d(32, eps=0.1, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (activation): ReLU()\n",
       "  )\n",
       "  (output): Linear(in_features=32, out_features=1, bias=True)\n",
       ")"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "checker.model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Use `checker.checkpoints` to list checkpoints."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Checker> includes:\n",
       "\"mse_3\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/mse_3.pth.s\n",
       "\"mse_1\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/mse_1.pth.s\n",
       "\"mae_2\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/mae_2.pth.s\n",
       "\"r2_5\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/r2_5.pth.s\n",
       "\"mse_5\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/mse_5.pth.s\n",
       "\"r2_1\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/r2_1.pth.s\n",
       "\"mae_4\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/mae_4.pth.s\n",
       "\"r2_3\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/r2_3.pth.s\n",
       "\"mae_3\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/mae_3.pth.s\n",
       "\"r2_4\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/r2_4.pth.s\n",
       "\"mse_2\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/mse_2.pth.s\n",
       "\"mae_1\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/mae_1.pth.s\n",
       "\"mae_5\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/mae_5.pth.s\n",
       "\"r2_2\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/r2_2.pth.s\n",
       "\"mse_4\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/mse_4.pth.s\n",
       "\"pearsonr_5\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/pearsonr_5.pth.s\n",
       "\"pearsonr_1\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/pearsonr_1.pth.s\n",
       "\"pearsonr_3\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/pearsonr_3.pth.s\n",
       "\"pearsonr_4\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/pearsonr_4.pth.s\n",
       "\"pearsonr_2\": /Users/liuchang/Google 云端硬盘/postdoctoral/tutorial/xenonpy_hands-on_20190925 2/inorganic.crystal.efermi/xenonpy.compositions/pytorch.nn.neural_network/290-180-177-162-46-32-1-$WEnkZ6e3/checkpoints/pearsonr_2.pth.s"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "checker.checkpoints"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "and `checker.checkpoints[<checkpoint name>]` to load information from a specific checkpoint."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "OrderedDict([('id', 'mse_3'),\n",
       "             ('iterations', 670),\n",
       "             ('model_state',\n",
       "              OrderedDict([('layer_0.linear.weight',\n",
       "                            tensor([[-2.7413,  2.2444, -0.6347,  ..., -0.4093,  1.7569,  0.3331],\n",
       "                                    [-3.4710,  3.1230, -1.5549,  ...,  0.7105,  0.1097, -0.5686],\n",
       "                                    [-1.0452, -0.0773, -1.8657,  ..., -2.4842, -2.4716,  0.0133],\n",
       "                                    ...,\n",
       "                                    [-2.8635,  2.0810, -1.8306,  ..., -0.7263,  0.1966,  0.6690],\n",
       "                                    [-1.4911,  0.3969, -2.4763,  ..., -2.1228, -2.3481, -0.2280],\n",
       "                                    [-4.5753,  3.2695, -3.0195,  ..., -1.5596, -0.2794,  0.9001]])),\n",
       "                           ('layer_0.linear.bias',\n",
       "                            tensor([ 1.8674e-01,  1.2594e+00,  6.3830e-03,  8.8717e-03, -2.2134e-02,\n",
       "                                     1.0698e+00,  1.3682e-01, -6.5420e-01, -2.2904e-02,  2.5760e-01,\n",
       "                                     1.3303e-02, -7.1474e-01,  5.6013e-02,  2.4740e-01,  3.6663e-02,\n",
       "                                    -4.6552e-02,  3.5276e-01,  4.7275e-01,  7.8601e-02,  1.7847e-01,\n",
       "                                     4.1219e-01,  1.1378e-01, -1.5997e-01, -4.0251e-02, -5.4254e-02,\n",
       "                                     4.1694e-01,  1.6805e-01,  6.6942e-01,  4.1481e-02,  1.0744e-01,\n",
       "                                     5.8623e-01,  9.0315e-01,  1.2878e+00,  5.1398e-01,  2.8303e-01,\n",
       "                                     9.7579e-02,  1.7690e-01,  1.6764e-01, -2.3814e-01,  2.6120e-01,\n",
       "                                     5.1376e-01,  2.8208e-01,  3.4689e-02,  4.8316e-02,  2.2929e-01,\n",
       "                                     4.6762e-02, -4.5354e-02,  1.7217e-03,  4.2179e-03,  5.0165e-01,\n",
       "                                     2.7844e-01, -1.4434e-01, -8.3940e-01,  9.0725e-02, -1.2393e-01,\n",
       "                                    -7.6476e-02, -5.0103e-02,  2.0573e-02, -4.6605e-01,  4.2584e-04,\n",
       "                                    -1.2431e-03,  1.7416e-02,  1.9315e-01, -8.2507e-02,  5.6182e-02,\n",
       "                                    -1.5245e-01, -1.6458e-02,  1.2927e-01, -1.0788e-01, -6.2298e-02,\n",
       "                                     3.5064e-01,  3.9070e-01,  1.4682e-02,  7.9495e-02,  3.9572e-01,\n",
       "                                     3.2543e-02,  3.1317e-02,  2.2445e-01, -5.1132e-01,  9.8786e-01,\n",
       "                                     8.7456e-02, -2.9127e-02,  2.8352e-01, -5.4528e-02, -3.7345e-02,\n",
       "                                     1.5468e-01,  8.5600e-01, -4.6745e-03,  4.3161e-01,  2.3493e-02,\n",
       "                                     2.1969e-01, -4.6591e-02,  4.1278e-02, -3.0714e-01,  3.9996e-02,\n",
       "                                     3.8986e-02,  5.1559e-02,  6.2200e-02,  5.3427e-02,  1.5805e-01,\n",
       "                                     4.4626e-01,  1.8942e-01,  3.0517e-02,  8.5060e-03,  2.3743e-01,\n",
       "                                     4.2354e-02,  1.4166e-02,  1.6934e-01,  4.8535e-01, -4.7722e-02,\n",
       "                                     4.4760e-01,  2.1024e-01, -3.7049e-02, -3.6345e-01,  1.1755e-01,\n",
       "                                    -8.5783e-02, -1.7177e-01, -2.4121e-02,  1.7525e-01,  5.6658e-01,\n",
       "                                    -1.1588e-01, -6.6737e-02,  1.9659e-01, -5.5139e-02,  2.2182e-01,\n",
       "                                     4.2854e-01,  9.8938e-01,  5.8801e-01,  3.2118e-01,  3.4174e-01,\n",
       "                                    -6.3782e-02,  2.4754e-01, -6.7626e-02,  2.2835e-01,  9.6599e-03,\n",
       "                                     1.3314e+00,  6.5396e-03,  2.8145e-02, -1.1071e+00,  5.0319e-01,\n",
       "                                     1.7117e-01,  5.1287e-01, -8.9040e-02, -1.4837e-01, -1.2847e-02,\n",
       "                                     3.7948e-01, -9.2569e-04, -3.3302e-03,  2.0668e-01,  3.3091e-04,\n",
       "                                     1.2669e-01, -6.7318e-02,  4.1707e-01, -5.6539e-02,  1.6370e-02,\n",
       "                                    -6.2774e-02,  2.8587e-02, -3.5977e-02,  3.8779e-01, -4.2425e-02,\n",
       "                                     7.1804e-03,  3.5864e-01,  1.6941e+00,  9.8432e-01,  2.3810e-02,\n",
       "                                     9.4629e-02,  1.3361e-01, -9.8752e-01, -2.1931e-02,  1.8669e+00,\n",
       "                                     4.0989e-02, -3.4537e-02,  3.9911e-01,  2.6089e-02,  2.7814e-02,\n",
       "                                     4.0855e-01,  4.8781e-02,  1.2521e+00,  1.6534e-03,  1.0430e+00])),\n",
       "                           ('layer_0.normalizer.weight',\n",
       "                            tensor([ 0.5104,  0.5791,  0.3863,  0.5147,  0.4768,  0.6566,  0.8734,  0.6645,\n",
       "                                     0.2071,  0.5819,  0.5087,  0.8138, -0.0092,  0.3608,  0.7038,  0.4413,\n",
       "                                     0.4833,  0.4180,  0.3368,  0.8463,  0.9392,  0.6924,  0.9296,  0.3491,\n",
       "                                     0.8069,  0.6619,  0.4793,  0.8459,  0.3441,  0.4590,  0.2950,  0.7371,\n",
       "                                     1.0435,  0.5632,  0.8104,  0.3961,  0.8829,  0.4403,  0.6482,  0.1659,\n",
       "                                     0.8168,  0.6445,  0.2457,  0.5658,  0.6175,  0.5902,  0.4836,  0.4961,\n",
       "                                     0.8358,  0.6547,  1.0532,  0.2442,  0.7796,  0.6544,  0.4556,  0.7625,\n",
       "                                     0.5656,  0.6227,  0.4305,  0.6411,  0.0154, -0.0189,  0.8002,  0.7829,\n",
       "                                    -0.3495,  0.5086,  0.8894,  0.7311,  0.2554,  0.6265,  0.2209,  0.7341,\n",
       "                                     0.3376,  0.6506,  0.5737,  0.6515,  0.3971,  0.6820,  0.2186,  0.9487,\n",
       "                                     0.6806,  0.0019,  0.4236, -0.0177,  0.5589,  0.8026,  1.0764,  0.4386,\n",
       "                                     0.9103,  0.5176,  0.5547,  0.7266,  0.5542,  0.8855,  0.5962,  0.2110,\n",
       "                                     0.5829,  0.4500,  0.4146,  0.7857,  0.3986,  0.2688,  0.6396,  0.1095,\n",
       "                                     0.3394, -0.0042,  0.8618,  0.8215,  0.6750,  0.5059,  0.6141,  0.3358,\n",
       "                                     0.3855,  0.3334,  0.8454,  0.6317,  1.0210,  0.8109,  0.2147,  0.5198,\n",
       "                                     0.0800,  0.7424,  0.2460,  0.8399,  0.8723,  0.5189,  0.7770,  1.0010,\n",
       "                                     0.2620,  0.8994,  0.6743,  0.4495,  0.7078,  0.3760,  0.3484,  0.6523,\n",
       "                                     0.6504, -0.3513,  0.3846,  0.3045,  0.6785,  0.9537,  0.3647,  0.3666,\n",
       "                                     0.5900,  0.8485,  0.4425,  0.5642,  0.6941,  0.4128,  1.0695,  0.4578,\n",
       "                                     0.3176,  0.6530,  0.7904,  0.7789,  0.7717,  0.3916,  0.4966,  0.3998,\n",
       "                                     0.4341,  0.5248,  0.5466,  0.6723,  0.2765,  0.4336,  0.2317,  0.4454,\n",
       "                                     0.1769,  1.0672,  0.7877,  0.2391,  0.3636,  0.2797,  0.3982,  0.2906,\n",
       "                                     0.4604,  0.6001,  0.2475,  0.8258])),\n",
       "                           ('layer_0.normalizer.bias',\n",
       "                            tensor([-0.1962, -0.0443, -0.2787, -0.0800, -0.4596, -0.1044, -0.1859,  0.1330,\n",
       "                                     0.0798, -0.1919, -0.1971, -0.2456, -0.0873, -0.3314, -0.1081, -0.3820,\n",
       "                                    -0.2372, -0.1259,  0.2093, -0.1731, -0.0683, -0.2343, -0.2495, -0.1465,\n",
       "                                    -0.4826,  0.0515, -0.1702, -0.4426,  0.0551, -0.0520, -0.1534, -0.0523,\n",
       "                                    -0.0462, -0.1940,  0.1447, -0.0863, -0.1390, -0.1070,  0.0972,  0.0248,\n",
       "                                    -0.4015, -0.2151, -0.1441,  0.0269, -0.0848, -0.1441, -0.3927, -0.4433,\n",
       "                                    -0.4028, -0.0485, -0.1162,  0.1694, -0.1743, -0.2001, -0.3018, -0.5739,\n",
       "                                     0.0599, -0.2187,  0.1332, -0.1887, -0.1445, -0.0679, -0.1672, -0.1422,\n",
       "                                    -0.3938,  0.2836,  0.0275,  0.1534,  0.1156, -0.2450, -0.1039, -0.1504,\n",
       "                                    -0.3893, -0.1549, -0.2389, -0.4126, -0.4205, -0.0470,  0.2166, -0.0405,\n",
       "                                    -0.1702, -0.0595,  0.0128, -0.1007,  0.0836,  0.0919,  0.1459, -0.2995,\n",
       "                                    -0.1740, -0.2381, -0.2750, -0.1821, -0.2118, -0.2194, -0.1279, -0.3674,\n",
       "                                     0.0930, -0.0964,  0.0278, -0.3024,  0.0738, -0.0719, -0.4944, -0.2141,\n",
       "                                    -0.1037, -0.0635, -0.3994, -0.1838, -0.1033, -0.1383, -0.0299,  0.0610,\n",
       "                                    -0.1442,  0.0914, -0.1958, -0.2726, -0.2943, -0.1576,  0.1738,  0.0190,\n",
       "                                     0.1938, -0.0365,  0.1417, -0.1462, -0.3113,  0.0542, -0.1261, -0.2680,\n",
       "                                    -0.0870, -0.1613, -0.4117, -0.0631, -0.3835, -0.0387, -0.0150,  0.1125,\n",
       "                                    -0.2066, -0.4758,  0.3709, -0.0092, -0.2423, -0.5018,  0.0690,  0.0409,\n",
       "                                    -0.1773, -0.2771,  0.0214, -0.3464, -0.0111, -0.1203, -0.2852, -0.3696,\n",
       "                                    -0.0033, -0.0295, -0.1827, -0.1715, -0.3728,  0.0648,  0.0032, -0.2143,\n",
       "                                    -0.0813, -0.1441,  0.3781, -0.2067, -0.0122,  0.0530, -0.0088,  0.1383,\n",
       "                                     0.0448,  0.1684, -0.1943, -0.0861,  0.1116, -0.2284, -0.0506, -0.0290,\n",
       "                                    -0.1651,  0.2154, -0.3402, -0.0656])),\n",
       "                           ('layer_0.normalizer.running_mean',\n",
       "                            tensor([-1.2129e+06, -2.8267e+05, -1.8897e+05,  3.0676e+05, -3.7214e+05,\n",
       "                                     2.1488e+05, -1.3920e+06,  3.9283e+05, -2.0499e+05, -7.2328e+05,\n",
       "                                     1.0294e+06, -9.7885e+04, -8.7283e+05,  1.5692e+06,  2.8840e+05,\n",
       "                                    -3.6137e+05, -3.1562e+05, -2.7778e+05, -3.0051e+05, -1.0735e+06,\n",
       "                                    -1.8500e+05, -2.7350e+05, -2.9411e+05,  1.1861e+06, -3.7914e+05,\n",
       "                                    -1.7805e+05, -1.1815e+06, -3.5938e+05,  6.2004e+05, -7.6983e+05,\n",
       "                                     3.5743e+05, -2.6413e+05, -1.4222e+05, -1.5700e+05, -5.4438e+03,\n",
       "                                    -1.1430e+06,  1.6714e+05, -1.1032e+06, -7.9594e+03,  2.0885e+05,\n",
       "                                    -5.4440e+05, -6.4795e+05,  5.7594e+05, -2.3447e+05, -7.4664e+05,\n",
       "                                     7.4651e+05, -7.0639e+05, -6.9201e+05, -2.2437e+05,  1.0384e+05,\n",
       "                                    -8.4054e+05,  6.0643e+05,  3.3801e+03, -3.2249e+05, -4.2711e+05,\n",
       "                                    -1.1043e+05, -2.9549e+05,  1.0297e+06, -1.1715e+05,  1.2755e+05,\n",
       "                                     7.3041e+05,  8.6747e+05, -1.7673e+05, -7.2339e+04, -2.5830e+06,\n",
       "                                    -6.3911e+04,  4.1610e+05,  1.6950e+05, -3.6926e+03, -4.5985e+05,\n",
       "                                     2.6051e+05, -7.6430e+05,  1.2047e+06, -4.1445e+05, -6.9484e+05,\n",
       "                                    -9.0072e+05,  1.4235e+06,  3.1018e+05, -2.3230e+04, -2.7941e+05,\n",
       "                                    -3.4013e+04,  3.8489e+04, -6.6028e+05,  3.6265e+05,  1.4223e+06,\n",
       "                                    -1.5331e+05, -1.1047e+05, -8.2704e+05, -1.0100e+05, -5.6225e+04,\n",
       "                                    -1.0116e+06,  5.0040e+05, -1.1833e+06, -7.6824e+04,  1.3367e+06,\n",
       "                                     2.0518e+06,  5.9261e+05, -3.5650e+05,  1.5055e+05, -2.9754e+05,\n",
       "                                    -2.4155e+05, -1.4951e+06,  6.6657e+05,  6.3000e+04,  6.2948e+05,\n",
       "                                    -4.8433e+05, -4.4355e+05, -1.0859e+05, -2.5631e+05,  4.4660e+05,\n",
       "                                    -2.3497e+05,  2.0366e+04,  1.9218e+05, -2.9244e+05, -3.2546e+05,\n",
       "                                    -5.2584e+05, -7.7124e+04,  3.7811e+05, -2.3890e+05, -1.7612e+05,\n",
       "                                    -5.7066e+05,  4.8926e+04, -2.7278e+05,  9.3206e+05, -2.6738e+05,\n",
       "                                    -2.6777e+05, -1.4219e+05, -4.1422e+05,  7.3759e+05, -6.6235e+05,\n",
       "                                     1.0376e+06, -2.9605e+05,  4.3901e+04, -1.4490e+04, -1.0147e+05,\n",
       "                                    -2.4937e+04, -5.1361e+04, -1.7725e+06,  2.0963e+04,  4.7144e+05,\n",
       "                                    -9.8638e+05, -4.2225e+05,  7.8836e+04,  7.1857e+04, -4.3700e+02,\n",
       "                                    -5.0268e+05,  3.0922e+05, -1.3685e+05, -7.1152e+05, -3.0388e+05,\n",
       "                                    -1.3728e+05,  8.0650e+05, -2.1282e+05,  6.7584e+05, -2.0512e+05,\n",
       "                                    -1.5178e+05, -6.8367e+05,  4.0433e+05, -4.0490e+05,  8.2663e+05,\n",
       "                                    -2.6122e+05, -7.7120e+05, -7.1985e+03, -3.4465e+05,  2.2040e+05,\n",
       "                                    -4.8741e+05, -7.2770e+05, -2.9618e+04,  4.6617e+05, -7.7764e+04,\n",
       "                                    -3.3846e+05,  1.5320e+05, -6.9355e+04, -3.7454e+05, -1.2436e+05,\n",
       "                                     8.0627e+05, -1.0685e+06, -1.6126e+05,  1.0174e+06, -2.2256e+05])),\n",
       "                           ('layer_0.normalizer.running_var',\n",
       "                            tensor([2.8734e+12, 1.0846e+11, 4.1629e+12, 5.6613e+11, 3.7155e+12, 1.1434e+11,\n",
       "                                    1.0065e+13, 3.2466e+11, 8.6504e+11, 7.8276e+11, 1.9834e+12, 4.1663e+10,\n",
       "                                    2.1929e+12, 1.0113e+13, 1.1670e+12, 1.8113e+12, 2.1190e+11, 2.4035e+11,\n",
       "                                    6.7875e+11, 5.2790e+12, 1.9742e+11, 6.1139e+11, 4.2168e+11, 1.4509e+12,\n",
       "                                    1.2841e+12, 1.9323e+11, 1.2050e+12, 1.4804e+11, 1.1170e+12, 3.4495e+12,\n",
       "                                    5.7916e+11, 2.9058e+11, 1.1115e+11, 5.0044e+10, 2.3590e+10, 1.5554e+12,\n",
       "                                    7.8063e+10, 3.3613e+12, 3.5218e+11, 1.0136e+11, 3.4714e+11, 1.1977e+12,\n",
       "                                    3.1281e+11, 2.4396e+11, 2.0106e+12, 7.3961e+11, 2.3273e+12, 2.2810e+12,\n",
       "                                    6.7913e+11, 3.6403e+10, 4.0202e+12, 1.7135e+12, 1.9181e+10, 4.7717e+11,\n",
       "                                    4.6237e+11, 6.4884e+11, 7.9020e+11, 6.5175e+11, 1.7558e+11, 1.2140e+12,\n",
       "                                    9.9990e+11, 1.6053e+12, 5.6199e+11, 8.0261e+10, 4.2270e+12, 4.0093e+10,\n",
       "                                    1.7091e+11, 7.3718e+10, 3.5427e+10, 1.1907e+12, 1.8352e+11, 2.5166e+12,\n",
       "                                    1.9807e+12, 1.3332e+12, 3.2925e+11, 1.2385e+12, 1.7686e+12, 3.5039e+11,\n",
       "                                    8.4248e+10, 4.6650e+11, 1.1013e+11, 3.3575e+12, 5.2994e+11, 6.9099e+11,\n",
       "                                    1.7189e+12, 1.5802e+11, 8.0225e+10, 2.2410e+12, 6.5210e+10, 9.8536e+10,\n",
       "                                    1.2242e+12, 1.6420e+12, 2.2263e+12, 9.3532e+10, 3.2451e+12, 4.3126e+12,\n",
       "                                    1.7026e+12, 1.4901e+12, 1.2225e+11, 2.8621e+11, 2.1624e+11, 2.8024e+12,\n",
       "                                    3.3252e+11, 3.8007e+11, 2.4959e+12, 4.3159e+11, 1.9044e+12, 9.7064e+10,\n",
       "                                    1.3783e+11, 2.6057e+11, 5.2831e+11, 2.9040e+11, 1.8034e+12, 4.2261e+11,\n",
       "                                    5.9581e+11, 2.3897e+12, 2.9622e+10, 2.5139e+11, 3.8814e+11, 2.0273e+11,\n",
       "                                    1.0169e+12, 6.6312e+11, 3.9934e+11, 1.5518e+12, 1.6059e+11, 2.0429e+11,\n",
       "                                    7.3254e+10, 3.9329e+11, 5.0400e+12, 2.5599e+12, 1.3495e+12, 3.0244e+11,\n",
       "                                    4.8005e+10, 5.1000e+10, 3.0274e+11, 2.7907e+10, 5.9713e+11, 2.4381e+12,\n",
       "                                    9.9436e+09, 8.3648e+11, 3.2557e+12, 4.1370e+11, 5.8659e+10, 3.1412e+10,\n",
       "                                    8.6003e+10, 9.1349e+11, 2.6566e+11, 6.0918e+11, 2.4435e+12, 4.5672e+11,\n",
       "                                    8.8486e+10, 6.6567e+11, 1.4290e+11, 4.8815e+12, 4.3067e+11, 1.8827e+11,\n",
       "                                    4.8827e+12, 2.1159e+11, 9.6153e+11, 1.4606e+12, 4.5325e+11, 4.5757e+11,\n",
       "                                    1.0029e+10, 1.4708e+11, 6.1296e+11, 6.3223e+11, 4.4463e+11, 1.1444e+10,\n",
       "                                    1.1462e+12, 5.3529e+10, 6.8962e+11, 5.9348e+11, 2.1475e+11, 4.1514e+11,\n",
       "                                    1.0480e+12, 1.2999e+12, 3.4963e+12, 8.6104e+10, 9.5250e+11, 2.2460e+11])),\n",
       "                           ('layer_0.normalizer.num_batches_tracked',\n",
       "                            tensor(670)),\n",
       "                           ('layer_1.linear.weight',\n",
       "                            tensor([[-0.3181, -0.0467,  0.1220,  ..., -0.3037,  0.0751, -0.5011],\n",
       "                                    [ 0.1769,  0.0907,  0.6257,  ...,  0.0173,  0.1333,  0.4019],\n",
       "                                    [ 0.0093, -0.2277, -0.0919,  ..., -0.2902, -0.1235, -0.2536],\n",
       "                                    ...,\n",
       "                                    [ 0.4216,  0.1898, -0.1141,  ...,  0.1129, -0.0119,  0.1866],\n",
       "                                    [-0.0128,  0.0372, -0.3504,  ..., -0.1693, -0.2387, -0.3789],\n",
       "                                    [-0.1159,  0.1799,  0.2841,  ...,  0.1712,  0.0442, -0.0150]])),\n",
       "                           ('layer_1.linear.bias',\n",
       "                            tensor([ 0.4272, -0.9039,  0.1904, -0.2160,  0.4101, -0.1103,  0.4987,  0.2544,\n",
       "                                     0.1019,  0.0742,  0.6390,  0.0388,  0.0458, -0.6708, -0.0971, -0.1611,\n",
       "                                     0.0943, -1.1995, -0.0920,  0.3232,  0.2385, -0.1232,  0.1995, -0.4173,\n",
       "                                    -0.0610,  0.0653,  0.1749,  0.0328,  0.4999, -0.2223,  0.0241,  0.7735,\n",
       "                                     0.1619,  0.0434, -0.1896, -0.3395,  0.0403,  0.3407, -0.3957,  0.1370,\n",
       "                                     0.5093,  0.2799,  0.0323, -0.0116,  0.2430,  0.2210, -0.0503,  0.0454,\n",
       "                                    -0.0668,  0.4199,  0.1628, -1.0166,  0.4744, -0.3817,  0.1295, -0.2087,\n",
       "                                     0.5544,  0.1096,  0.0749, -1.4452,  0.0350, -0.5916,  0.0621,  0.0480,\n",
       "                                     0.1958,  0.4391,  0.5505,  0.2575,  0.0325,  0.3898,  0.3660,  0.2256,\n",
       "                                     0.4397, -0.0505,  0.3201,  0.3299,  0.1729,  0.2120,  0.3927,  0.1806,\n",
       "                                    -0.0665,  0.2679,  0.0802,  0.2549,  0.3061, -0.5109,  0.2203, -0.1280,\n",
       "                                     0.2171, -0.0454,  0.3390,  0.1481,  0.8642,  0.1444, -0.2233, -0.2728,\n",
       "                                    -0.1692,  0.2542,  0.1593, -0.4494, -0.0971,  0.2951, -0.1180,  0.2975,\n",
       "                                     0.1763, -0.0883,  0.1806,  0.2068, -0.1619,  0.0125, -0.0279,  0.3348,\n",
       "                                     0.5742, -0.1454,  0.1260,  0.6690,  0.3612, -0.0294,  0.1213,  0.4081,\n",
       "                                    -0.2089,  0.2120,  0.2244,  0.4372, -0.0115,  0.7784,  0.1602, -0.0813,\n",
       "                                    -0.0493, -0.1658,  0.3238,  0.2760, -0.0432, -0.0420, -0.0659,  0.3089,\n",
       "                                     0.0190,  0.5050,  0.6044, -0.2358,  0.2355, -0.2841,  0.0530,  0.4726,\n",
       "                                     0.5186,  0.2180,  0.2962, -0.1304,  0.1614,  0.3440,  0.2312,  0.6344,\n",
       "                                    -0.3127, -0.2918,  0.2700, -0.1242,  0.6109, -0.1531,  0.0123,  0.2946,\n",
       "                                     0.5476,  0.4071,  0.2653, -0.4429,  0.1034, -0.0617,  0.2970, -0.0116,\n",
       "                                    -0.3955, -0.0198,  0.6731,  0.4815,  0.4867,  0.0948,  0.2610,  0.1566,\n",
       "                                     0.0384])),\n",
       "                           ('layer_1.normalizer.weight',\n",
       "                            tensor([ 0.7724,  0.5528,  0.7754,  0.7696,  0.2109,  0.4952,  0.7166,  0.2034,\n",
       "                                     0.3974,  0.4473,  0.4182,  0.4169,  0.8112,  0.9732,  0.6718,  0.6471,\n",
       "                                     0.6182,  0.2758,  0.2656,  0.7420,  0.8008,  0.0970,  0.3573,  0.7887,\n",
       "                                     0.4323,  0.7148,  0.8219,  0.4425,  0.2586,  0.8524,  0.7631, -0.1480,\n",
       "                                     0.6211,  0.7283,  0.7019,  0.6664,  0.7825,  0.2799,  0.7122,  0.8373,\n",
       "                                     0.3143,  0.5367,  0.8127,  0.5353,  0.6630,  0.7752,  0.2445,  0.5905,\n",
       "                                     0.2394,  0.8094,  0.6661,  0.2757,  0.3573,  0.5570,  0.7235,  0.6305,\n",
       "                                     0.8710,  0.4753,  0.3409,  0.3190,  0.6961,  0.5270,  0.6013,  0.0756,\n",
       "                                     0.7081,  0.5906,  0.1810,  0.7286, -0.0057,  0.8344,  0.4059,  0.1987,\n",
       "                                     0.7828,  0.7904,  0.8655,  0.4139,  0.7423,  0.3984,  0.7705,  0.7546,\n",
       "                                     0.5489,  0.4179,  0.3176,  0.3345,  0.7589,  0.3580,  0.1110,  0.5608,\n",
       "                                     0.5362,  0.0094,  0.2373,  0.3635,  0.7349,  0.5421,  0.7940,  0.8640,\n",
       "                                     0.0260,  0.2689,  0.6665,  0.7943,  0.5509,  0.4087,  0.7532,  0.4168,\n",
       "                                     0.9124,  0.0878,  0.5972,  0.6600,  0.7846,  0.3822,  0.3208,  0.6693,\n",
       "                                     0.4407,  0.4913,  0.7079,  0.6869,  0.3143,  0.7635,  0.7462,  0.1772,\n",
       "                                     0.7289,  0.0499,  0.5132,  0.6099,  0.8893,  0.6448,  0.4385,  0.7160,\n",
       "                                     0.6739,  0.3674,  0.1015,  0.7265, -0.0049,  0.0171,  0.0766,  0.4091,\n",
       "                                     0.7618,  0.4541,  0.7765,  0.9321,  0.0817,  0.4848,  0.0063,  0.3314,\n",
       "                                     0.5573,  0.7276,  0.2552,  0.6275,  0.5366, -0.2922,  0.0431,  0.6978,\n",
       "                                     0.8908,  0.6146,  0.4422,  0.6265,  0.3998,  0.7618,  0.8459,  0.6532,\n",
       "                                     0.6608,  0.6642,  0.3993,  0.7534,  0.8476,  0.7271,  0.7883,  0.5109,\n",
       "                                     0.6671,  0.3548, -0.3233,  0.6174,  0.6103,  0.8735,  0.1984,  0.8545,\n",
       "                                     0.5555])),\n",
       "                           ('layer_1.normalizer.bias',\n",
       "                            tensor([-4.8687e-01, -6.5793e-01, -1.7362e-01, -3.0067e-01,  1.2581e-01,\n",
       "                                    -2.2906e-01,  3.5819e-02,  5.0886e-02, -2.7870e-01, -1.7128e-01,\n",
       "                                     3.4052e-02, -4.9039e-01, -5.6463e-01, -5.9361e-01, -4.0186e-01,\n",
       "                                    -9.2585e-02, -2.2541e-01, -7.4718e-01, -5.0870e-03, -2.2716e-01,\n",
       "                                    -2.0561e-02, -2.0329e-01, -8.4164e-02, -5.8757e-01, -1.9374e-01,\n",
       "                                    -3.3367e-01, -2.2995e-01, -1.2856e-01,  9.6702e-03, -3.8536e-01,\n",
       "                                    -3.0355e-01, -4.4498e-01, -1.8743e-01, -1.9710e-01, -5.3411e-01,\n",
       "                                    -6.9149e-01, -4.0172e-01,  2.4301e-02, -3.2459e-01, -9.3060e-02,\n",
       "                                    -3.6030e-02, -1.1579e-01, -2.8658e-01, -2.4621e-01, -6.2366e-03,\n",
       "                                    -1.2196e-01, -1.3555e-01,  7.4362e-03, -2.5930e-01, -4.3468e-01,\n",
       "                                    -1.5946e-01, -6.9949e-01, -4.7001e-02, -4.9838e-01, -2.6839e-01,\n",
       "                                    -5.2396e-01, -1.5207e-01, -1.1730e-01, -2.5288e-01, -6.5695e-01,\n",
       "                                    -1.9395e-01, -4.9804e-01, -1.9134e-01, -1.1425e-01, -2.8989e-01,\n",
       "                                    -2.3164e-01,  1.1617e-01, -2.5385e-01, -9.5173e-02, -3.7006e-01,\n",
       "                                     5.5945e-02,  2.0635e-01, -3.8304e-01, -4.2781e-01, -1.5396e-01,\n",
       "                                    -1.1947e-01, -2.7199e-02, -2.8786e-01, -2.0645e-01, -1.5319e-01,\n",
       "                                    -3.2556e-01, -1.1684e-01,  5.5866e-03, -3.4911e-01, -2.7693e-01,\n",
       "                                    -3.4123e-01,  2.0492e-01, -3.2356e-01, -1.6581e-01, -9.6886e-02,\n",
       "                                     1.1676e-01, -1.9239e-01, -1.6082e-01, -7.9961e-02, -5.2100e-01,\n",
       "                                    -5.1340e-01, -1.8974e-01,  2.5859e-02, -1.3545e-01, -3.9954e-01,\n",
       "                                    -7.8536e-02, -2.9645e-01, -4.8769e-01,  2.5232e-02,  1.1020e-01,\n",
       "                                    -1.9782e-01, -1.7286e-01, -2.3323e-01, -4.2869e-01,  3.8918e-02,\n",
       "                                    -1.7333e-01, -3.7193e-01,  1.0578e-01, -9.5304e-02, -4.1619e-01,\n",
       "                                    -2.1274e-02,  2.9453e-01, -2.1269e-01, -1.0715e-01,  1.2427e-01,\n",
       "                                    -1.1718e-01,  1.1451e-01, -4.9374e-04, -1.6703e-01, -1.1600e-01,\n",
       "                                     7.1238e-02,  2.0437e-02, -1.5701e-01, -8.9630e-02, -2.1474e-01,\n",
       "                                     1.4690e-01,  1.7623e-02, -5.2768e-02, -8.0910e-02,  1.1171e-01,\n",
       "                                     9.7640e-02, -4.6893e-01,  2.8726e-02, -2.6173e-01, -6.1300e-01,\n",
       "                                     1.5880e-01, -2.9128e-01, -4.5310e-02,  1.8769e-01, -3.5182e-01,\n",
       "                                    -3.7850e-01,  1.3322e-03, -1.7291e-01, -1.0457e-01, -4.1100e-01,\n",
       "                                    -9.8451e-02, -4.5245e-01, -7.2406e-01, -4.2713e-01,  3.8897e-02,\n",
       "                                    -3.4561e-01, -4.0211e-02, -3.8704e-01, -3.5258e-01, -2.0678e-01,\n",
       "                                    -3.6973e-01, -3.4208e-01, -3.0089e-02, -4.2235e-01, -1.4618e-01,\n",
       "                                     1.4217e-01, -1.5353e-01, -1.9246e-01, -5.5187e-01, -9.1403e-02,\n",
       "                                    -4.0453e-01, -1.8983e-01, -1.1410e-01, -3.3431e-01,  1.1839e-01,\n",
       "                                    -1.3737e-01, -2.5578e-01])),\n",
       "                           ('layer_1.normalizer.running_mean',\n",
       "                            tensor([-1.0012,  0.9059, -0.5933,  1.2517, -0.1599, -0.2621, -0.5754, -0.7055,\n",
       "                                    -0.1043,  0.3594, -0.0773, -0.7850, -0.7410, -0.4356, -0.0951, -0.8019,\n",
       "                                     0.1038,  0.1979, -1.2412, -0.1483, -0.2528, -1.2501, -0.0598,  0.3535,\n",
       "                                    -0.0999, -0.4959, -0.0107, -1.2390, -0.0301, -0.1888,  0.5956, -0.5109,\n",
       "                                    -0.9230,  0.5715,  0.1734,  0.0887, -0.2923, -0.4678,  0.1751, -0.5447,\n",
       "                                    -1.0108,  0.0278, -0.5504,  0.2809, -0.8226, -0.3325, -0.2127, -0.6235,\n",
       "                                     0.2548,  0.5462,  0.0092,  0.2038, -0.6879, -0.1080, -1.1428,  0.1823,\n",
       "                                    -0.1586, -0.4211,  0.4230,  1.0469, -0.1016,  0.4202, -0.1107, -1.6935,\n",
       "                                    -0.0985, -0.3614, -0.2401, -0.4718,  0.2483, -0.3143,  0.4494,  0.2874,\n",
       "                                    -0.5771, -0.1627,  0.1163, -0.6621, -0.3129, -0.2038, -0.2718, -0.7657,\n",
       "                                     0.0480,  0.9996, -0.6919,  1.5673,  0.0111, -0.5343,  0.6665,  1.6854,\n",
       "                                    -0.9618,  0.1406, -1.0776,  0.3344, -0.9839, -0.1319,  0.0170,  1.1883,\n",
       "                                    -1.3508, -0.4064, -0.9850,  0.1428,  0.9735, -0.3728, -0.0558, -0.4150,\n",
       "                                     0.0863, -1.1260, -0.2841, -0.0181, -0.5096, -0.4574,  0.2621, -0.2732,\n",
       "                                    -0.3459,  0.3559, -0.1139, -0.2430,  0.4331, -0.7160,  0.1169,  0.2474,\n",
       "                                    -0.6933,  0.7129, -0.8441, -0.0880, -0.1472, -0.2216, -0.6946, -0.9052,\n",
       "                                    -1.0473,  0.4883, -0.7345, -0.5874, -0.1417, -0.5711,  0.1673, -1.0069,\n",
       "                                    -0.2246,  0.5413, -0.9195, -0.5592, -0.5670, -0.2906, -1.0233,  0.0110,\n",
       "                                    -0.4851,  0.3339, -1.1661, -1.1126,  0.0384,  0.0168, -1.2003, -0.5942,\n",
       "                                     0.7896,  0.4963, -0.3686,  0.1805,  0.1795, -0.1698,  0.3953, -0.3368,\n",
       "                                    -0.4614, -0.0705, -0.2032,  0.3827, -0.1626, -0.1555, -1.2359,  0.2446,\n",
       "                                    -0.8220,  0.3409,  0.4112, -0.0505, -0.7286,  0.9226, -0.3724, -0.6035,\n",
       "                                    -0.2093])),\n",
       "                           ('layer_1.normalizer.running_var',\n",
       "                            tensor([ 1.5784,  4.3603,  3.0406,  3.9843,  2.5842,  1.6847,  4.2242,  2.3038,\n",
       "                                     1.4713,  2.3048,  3.4151,  1.8586,  2.6211,  1.4248,  1.6324,  3.5756,\n",
       "                                     1.8121, 11.3280,  3.3998,  2.4089,  1.8012,  1.3024,  2.6088,  1.7034,\n",
       "                                     1.7349,  2.2189,  2.0389,  2.4620,  1.6277,  1.7833,  1.6252,  2.9811,\n",
       "                                     3.4582,  1.0297,  1.1774,  1.5030,  1.6943,  2.2126,  0.9261,  3.2761,\n",
       "                                     3.3161,  2.1361,  1.7398,  1.4311,  3.6328,  2.6587,  1.8304,  2.9714,\n",
       "                                     1.9231,  1.7223,  1.9149,  9.2152,  4.8232,  1.8995,  2.0808,  1.6926,\n",
       "                                     1.0224,  2.7655,  1.2581, 10.1292,  1.2400,  2.4070,  1.8323,  3.7722,\n",
       "                                     2.4576,  2.8575,  3.3780,  1.9544,  0.2371,  2.2880,  3.0949,  2.1179,\n",
       "                                     1.9815,  1.7560,  1.2390,  3.1567,  2.6115,  1.3628,  2.7039,  1.5545,\n",
       "                                     1.0431,  2.3704,  4.2586,  4.2653,  1.0075,  2.4698,  2.4783,  3.4799,\n",
       "                                     4.7091,  0.1635,  3.5400,  1.0513,  3.8962,  2.7156,  1.4790,  2.0708,\n",
       "                                     1.2599,  3.2595,  3.0823,  1.0620,  3.8206,  3.5075,  1.2568,  3.8073,\n",
       "                                     1.5245,  0.6714,  2.0583,  1.1045,  1.7741,  1.8926,  2.9702,  1.6884,\n",
       "                                     4.6135,  1.3068,  1.2621,  2.7422,  1.9513,  2.1740,  1.9496,  2.4949,\n",
       "                                     4.0215,  1.8097,  2.8780,  1.5046,  1.2563,  3.1307,  4.7151,  4.2565,\n",
       "                                     2.1220,  1.8459,  4.7927,  3.1600,  0.0777,  0.2535,  1.7539,  2.6288,\n",
       "                                     1.2955,  2.9272,  1.5976,  1.9883,  2.9310,  1.9140,  0.8124,  1.6121,\n",
       "                                     1.0627,  2.2470,  3.8162,  3.4301,  5.9179, 10.3987,  1.6794,  1.4560,\n",
       "                                     1.0918,  1.5822,  2.9202,  1.4964,  3.1723,  0.9711,  1.6405,  3.9672,\n",
       "                                     1.6582,  1.3467,  2.9507,  1.8645,  2.6762,  3.0827,  3.7867,  1.4285,\n",
       "                                     2.0862,  2.0662,  7.5074,  2.5092,  2.6214,  2.2816,  2.0605,  2.0044,\n",
       "                                     2.0017])),\n",
       "                           ('layer_1.normalizer.num_batches_tracked',\n",
       "                            tensor(670)),\n",
       "                           ('layer_2.linear.weight',\n",
       "                            tensor([[ 0.1494, -0.1234, -0.2821,  ..., -0.1532, -0.0732, -0.1128],\n",
       "                                    [-0.0551,  0.0989, -0.3374,  ..., -0.0806, -0.0468,  0.0616],\n",
       "                                    [-0.0130,  0.0661, -0.1006,  ...,  0.2441,  0.1385,  0.0855],\n",
       "                                    ...,\n",
       "                                    [ 0.1844, -0.2233, -0.3211,  ...,  0.0852, -0.2506,  0.1146],\n",
       "                                    [ 0.2989, -0.0142,  0.0532,  ...,  0.2498,  0.1741,  0.1107],\n",
       "                                    [ 0.0098,  0.3458,  0.2180,  ..., -0.1585,  0.2146,  0.1526]])),\n",
       "                           ('layer_2.linear.bias',\n",
       "                            tensor([ 3.0239e-01, -5.3302e-02,  2.2736e-04,  2.0087e-01, -3.8188e-02,\n",
       "                                    -1.3411e-01,  1.2893e-01, -2.1880e-02, -5.9000e-02, -5.4540e-02,\n",
       "                                     5.2248e-02,  1.0601e-01,  2.3720e-01,  1.8199e-01, -8.2406e-02,\n",
       "                                     2.6802e-01,  2.7499e-01,  1.5136e-01,  6.0337e-02,  5.2905e-02,\n",
       "                                     2.6242e-01,  5.0922e-01,  1.0646e-01,  6.9072e-02,  5.6843e-01,\n",
       "                                     7.4985e-02,  3.5433e-01,  2.1146e-01,  1.9029e-02, -2.7482e-02,\n",
       "                                     2.5046e-02, -1.1538e-01,  9.9619e-02,  2.5464e-01,  5.0537e-01,\n",
       "                                     4.9756e-01, -6.2948e-02,  1.4187e-01, -3.8272e-01,  1.1998e-01,\n",
       "                                     2.3396e-01,  8.7638e-01, -6.1409e-02, -1.7969e-01, -4.5910e-02,\n",
       "                                     2.2924e-01,  2.2706e-01,  3.2552e-01,  1.0975e-01,  6.2968e-02,\n",
       "                                    -6.4498e-02,  2.7169e-01,  2.5185e-01,  1.8035e-01,  3.2196e-01,\n",
       "                                     2.3540e-01, -2.2477e-01, -1.8710e-01,  1.4068e-01,  4.5910e-01,\n",
       "                                     1.6799e-01,  6.5608e-03,  1.2377e-01,  5.6258e-02, -7.8144e-01,\n",
       "                                     4.3098e-01,  5.6467e-01, -3.8760e-02, -1.3453e-01,  1.7881e-02,\n",
       "                                     4.1133e-01,  4.2046e-02,  5.0666e-01,  6.8481e-01,  4.9632e-01,\n",
       "                                     7.2266e-02,  8.6528e-02,  1.9726e-01,  2.0609e-01,  2.1501e-01,\n",
       "                                     1.3276e-01,  1.6760e-01,  2.7045e-01,  4.3999e-02,  3.6845e-01,\n",
       "                                     5.2264e-02,  7.5264e-01,  1.1433e-01,  8.4747e-02,  3.0166e-01,\n",
       "                                     1.9079e-01,  1.0732e-01,  1.6198e-01, -4.9254e-01,  3.7556e-01,\n",
       "                                     7.9555e-02,  4.4684e-02, -1.6131e-01, -8.8023e-03, -1.7224e-01,\n",
       "                                     8.8625e-02,  5.8451e-02, -6.2197e-03,  2.8570e-01,  3.5402e-01,\n",
       "                                     6.2331e-01,  1.1865e-01,  3.0338e-01,  1.5998e-01,  4.2997e-01,\n",
       "                                     1.6426e-01,  2.3096e-01,  3.6988e-01,  1.8134e-01,  2.1643e-01,\n",
       "                                     1.7414e-01,  1.7112e-01,  5.2216e-01,  2.0863e-01, -7.4228e-02,\n",
       "                                    -2.9927e-02,  3.0342e-01, -7.7274e-02,  9.7756e-02,  1.1052e-01,\n",
       "                                    -4.7219e-01,  6.3637e-01, -9.5980e-01,  9.8897e-02,  2.1375e-01,\n",
       "                                     4.4751e-02, -8.4467e-03,  1.0384e-01,  2.0667e-01,  1.5470e-01,\n",
       "                                     6.8581e-02,  1.7625e-01,  4.8077e-02, -1.1737e-01,  2.7715e-01,\n",
       "                                     3.4703e-01, -1.4836e-01,  6.2579e-02,  3.4763e-02,  1.2605e-01,\n",
       "                                    -6.6361e-02,  1.4257e-01,  5.6900e-01,  4.5195e-02,  3.9331e-01,\n",
       "                                    -5.3968e-03,  6.3631e-01,  1.8731e-02,  1.5331e-03,  3.2232e-01,\n",
       "                                     2.8391e-01,  6.9658e-02,  2.5956e-01,  7.0743e-04,  8.3131e-02,\n",
       "                                    -4.0698e-02, -2.9941e-02])),\n",
       "                           ('layer_2.normalizer.weight',\n",
       "                            tensor([ 0.5702,  0.2644,  0.0021,  0.3180,  0.0068,  0.7779,  0.9335,  0.8019,\n",
       "                                    -0.0026,  0.0130,  0.2658,  0.7768,  0.2027,  0.8133,  0.4755,  0.4897,\n",
       "                                     0.8120,  0.8660,  0.7208,  0.6162,  1.0882,  0.4964,  0.3053,  0.7868,\n",
       "                                     0.7445,  0.4685,  0.4096,  0.6145,  1.0769,  0.5526,  0.0037,  0.4450,\n",
       "                                     0.8094,  0.4504,  0.1680,  0.2447,  0.7307,  0.8844,  0.7824,  0.9964,\n",
       "                                     0.6331,  0.3162,  0.7100,  1.1262,  0.7011,  0.6610,  0.3499,  0.3103,\n",
       "                                     0.3882,  0.4211,  0.8804,  0.8797,  0.8348,  0.3552,  0.8234,  0.6807,\n",
       "                                     0.8677,  1.0028,  0.5138,  0.4255,  0.2642,  0.3518,  0.8169,  1.1435,\n",
       "                                     0.4310,  0.6880,  0.4420,  0.4483,  0.3779,  0.8295,  0.7879,  0.4734,\n",
       "                                     0.4358, -0.3511,  0.8456,  0.9694,  1.0054,  0.7382,  0.5879,  0.7284,\n",
       "                                     0.2063,  0.6878,  0.2600,  0.2843,  0.3376,  0.7433,  0.2563, -0.2748,\n",
       "                                     0.2734,  0.8698,  0.8010,  0.5559,  0.4545,  0.4025,  0.3367,  0.3711,\n",
       "                                     0.6905,  0.4669,  0.2259,  0.7472,  0.5634,  0.5947,  0.5681,  0.5274,\n",
       "                                     0.3540,  0.2592,  0.7315,  0.1985,  0.6367,  0.6228,  0.5678,  0.7469,\n",
       "                                     0.4683,  0.7877,  0.3997,  0.7646,  0.4645,  0.5035,  0.9133,  0.0689,\n",
       "                                     0.5252,  0.2042,  0.3749,  0.8870,  0.2443,  0.5081,  0.5015,  0.2709,\n",
       "                                     0.8070,  0.6796,  0.3015,  0.7249, -0.0299,  0.2952,  0.8090,  0.8051,\n",
       "                                     0.5114,  0.7190,  0.7958,  0.8325,  0.2930,  0.5036,  0.4367,  0.4449,\n",
       "                                     0.3949,  0.2757,  0.4136,  0.8340,  0.1668,  0.3975,  0.6852,  0.3907,\n",
       "                                     0.9086,  1.0399,  0.4983,  0.4873,  0.9199,  0.7441,  0.3017,  0.9651,\n",
       "                                     0.7199,  1.2637])),\n",
       "                           ('layer_2.normalizer.bias',\n",
       "                            tensor([-0.2877, -0.1392, -0.0760, -0.1539,  0.1394, -0.3909, -0.2643,  0.0480,\n",
       "                                    -0.0762, -0.0654, -0.1486, -0.4975,  0.0746, -0.2274, -0.5470,  0.1071,\n",
       "                                    -0.7426, -0.4433, -0.0887, -0.1903, -0.6628, -0.0657, -0.1192, -0.3334,\n",
       "                                     0.3805, -0.3382,  0.0676, -0.1222, -0.1984, -0.2463, -0.0655, -0.3659,\n",
       "                                    -0.2818, -0.2096,  0.1345,  0.2461, -0.1120, -0.1843, -0.4706, -0.0271,\n",
       "                                    -0.1814,  0.2776, -0.1216, -0.6338, -0.4935, -0.2531, -0.2297, -0.1417,\n",
       "                                    -0.0701, -0.2186, -0.5407, -0.4192, -0.1523, -0.1759,  0.0016, -0.0079,\n",
       "                                    -0.4961, -0.0490, -0.2012, -0.3597, -0.3253, -0.0746, -0.1436, -0.1339,\n",
       "                                    -0.4577, -0.0792,  0.1882, -0.2153,  0.0198, -0.4788, -0.0718, -0.7235,\n",
       "                                    -0.2115, -0.5022,  0.0753,  0.0306, -0.4394, -0.1115, -0.0326, -0.1410,\n",
       "                                    -0.2049, -0.2567,  0.3239, -0.2708,  0.1325,  0.3172,  0.2874, -0.2593,\n",
       "                                     0.0281, -0.3286,  0.0809, -0.1017, -0.1189, -0.1250, -0.0465, -0.2186,\n",
       "                                    -0.2037, -0.5524, -0.1744, -0.3866, -0.2166,  0.1573, -0.3897,  0.0766,\n",
       "                                    -0.2397,  0.2393, -0.3184, -0.0487, -0.3327, -0.1560, -0.4015,  0.0770,\n",
       "                                    -0.0272,  0.1276, -0.1546, -0.5013,  0.0713, -0.0201, -0.0893, -0.1252,\n",
       "                                    -0.2020,  0.3025, -0.2530,  0.2395, -0.3860, -0.4408,  0.0632, -0.5001,\n",
       "                                    -0.4768, -0.0856,  0.1180, -0.4356, -0.0909, -0.0226, -0.2583, -0.1047,\n",
       "                                    -0.2219,  0.0344, -0.3541,  0.2453,  0.2751, -0.0668, -0.2798,  0.1193,\n",
       "                                     0.2693, -0.2330, -0.2963,  0.0207,  0.0744,  0.3772, -0.0594,  0.2716,\n",
       "                                    -0.5286, -0.0988,  0.0071,  0.0785, -0.4082, -0.0996, -0.2286, -0.1072,\n",
       "                                    -0.0199, -0.0759])),\n",
       "                           ('layer_2.normalizer.running_mean',\n",
       "                            tensor([-0.4771,  0.3641,  0.8236, -0.5117, -0.0686, -0.1060, -0.2271,  1.1366,\n",
       "                                    -0.2673, -0.6526, -0.0598, -0.3061, -0.8754, -0.5231, -0.1757,  0.4500,\n",
       "                                    -0.8126, -0.2425, -0.5052, -0.7121, -0.4026, -0.9407, -0.2459, -0.9544,\n",
       "                                     0.4757, -0.5780, -0.4919,  0.7358, -0.7519, -1.2301, -0.5611, -0.1652,\n",
       "                                    -0.2985, -1.5551, -0.4821,  0.0284,  0.7578, -0.6171,  1.1162, -0.2456,\n",
       "                                     0.0706,  0.7641, -0.7250, -0.0534,  0.3452, -1.3787, -0.1682, -0.4565,\n",
       "                                     0.0713, -0.7465, -0.1761, -0.3235, -0.1148, -1.7422, -0.4193, -0.4965,\n",
       "                                     1.6195, -0.7968, -0.8410, -0.0312, -0.3054, -1.1875, -0.0566, -0.3492,\n",
       "                                     0.0022, -0.2289,  0.0654, -0.3188,  1.0440, -0.6859,  0.0535, -0.2057,\n",
       "                                    -0.9382, -1.3899,  0.4321,  0.1345, -0.8927,  0.0757, -0.8157, -0.7032,\n",
       "                                    -0.0305, -0.7336,  0.8059, -0.1560,  0.6057,  0.1573,  1.3014, -0.1614,\n",
       "                                     0.6065, -0.0084, -1.0559, -0.9398, -1.2521,  0.4449, -0.5810, -1.4539,\n",
       "                                    -0.2939,  0.2501, -0.4125,  0.1147, -0.6748,  0.5822, -1.2044, -0.1167,\n",
       "                                     0.0862,  0.5174, -0.8685, -1.8570,  0.0200, -0.6124, -0.3150,  0.5020,\n",
       "                                    -0.7448, -0.5465, -1.0633, -0.2995,  0.4695, -0.5782, -0.0652, -0.5671,\n",
       "                                    -1.0913, -0.6757,  0.6314, -0.3749, -0.8141, -0.3002,  0.3342, -0.5968,\n",
       "                                    -0.5119,  0.0035,  0.1476,  0.0465,  0.4401,  0.0067,  0.2266, -0.7001,\n",
       "                                    -0.3087, -0.8820, -0.2069,  0.8888, -0.2508,  1.0863, -0.4786,  0.1945,\n",
       "                                     0.5957, -0.1170, -0.3074,  0.1786, -0.8405,  0.0903,  0.1077,  0.4824,\n",
       "                                    -0.3188,  0.6018,  0.2859, -1.1954, -0.3282, -0.7685, -0.7977, -0.6385,\n",
       "                                     0.9811,  0.7143])),\n",
       "                           ('layer_2.normalizer.running_var',\n",
       "                            tensor([1.2081, 0.7104, 0.2791, 2.3922, 1.3909, 2.2632, 2.7923, 3.4170, 0.2371,\n",
       "                                    0.8223, 1.3578, 1.3718, 3.6416, 1.1920, 1.7282, 2.5161, 1.9402, 0.8729,\n",
       "                                    1.1787, 1.5293, 0.9767, 3.6726, 1.8250, 1.4192, 3.7494, 1.0485, 2.5048,\n",
       "                                    2.8385, 2.6879, 1.5259, 0.3320, 5.0883, 2.3942, 2.9072, 2.1876, 4.2835,\n",
       "                                    2.2496, 1.4994, 1.1825, 3.0025, 1.3385, 4.1513, 1.3618, 1.3812, 3.3829,\n",
       "                                    2.7717, 2.4212, 2.5637, 0.7795, 2.8931, 1.4690, 1.9977, 3.8444, 2.4258,\n",
       "                                    0.9577, 3.2737, 2.3147, 2.9155, 1.6753, 1.4580, 1.7667, 2.2222, 1.0000,\n",
       "                                    3.4903, 4.8764, 1.9582, 2.8803, 1.6848, 3.7632, 2.2867, 2.3507, 2.0570,\n",
       "                                    1.8109, 2.8613, 3.5178, 2.9047, 1.7047, 0.8481, 2.2359, 1.6086, 1.2468,\n",
       "                                    1.9544, 4.4804, 1.5151, 2.4366, 5.1584, 4.9039, 7.4413, 3.6987, 1.0244,\n",
       "                                    2.5796, 1.8977, 1.5950, 2.9663, 2.5948, 1.5380, 4.0055, 1.2963, 1.2724,\n",
       "                                    1.0664, 1.9278, 1.7581, 1.5861, 3.4465, 1.5621, 5.3650, 1.7151, 5.2662,\n",
       "                                    1.2776, 1.0102, 0.9393, 3.4590, 2.4199, 1.5162, 2.2081, 1.1188, 3.0619,\n",
       "                                    2.5459, 1.2963, 0.4084, 2.9916, 1.2197, 1.8776, 2.3511, 2.1200, 1.6047,\n",
       "                                    2.1336, 2.0964, 1.9538, 3.3240, 2.2276, 1.0014, 0.3187, 2.3750, 2.5523,\n",
       "                                    1.7299, 1.6644, 0.9426, 1.8765, 4.0248, 2.9807, 2.4890, 1.6497, 4.3925,\n",
       "                                    3.5190, 3.1066, 2.3513, 1.8139, 2.6495, 4.8435, 3.8340, 3.7585, 1.8870,\n",
       "                                    2.6590, 2.8758, 2.4845, 1.1878, 1.7869, 1.4710, 2.2284, 2.6282, 3.5244])),\n",
       "                           ('layer_2.normalizer.num_batches_tracked',\n",
       "                            tensor(670)),\n",
       "                           ('layer_3.linear.weight',\n",
       "                            tensor([[ 0.1380, -0.1854,  0.0619,  ..., -0.2357,  0.0291, -0.0855],\n",
       "                                    [ 0.1408,  0.0109,  0.0273,  ..., -0.1300, -0.2806,  0.0283],\n",
       "                                    [-0.0817,  0.0103, -0.1799,  ...,  0.0643, -0.0872, -0.2488],\n",
       "                                    ...,\n",
       "                                    [-0.1365,  0.2386,  0.0441,  ...,  0.1613,  0.0506,  0.0980],\n",
       "                                    [ 0.0804,  0.0271, -0.0292,  ...,  0.1756, -0.0669,  0.1731],\n",
       "                                    [ 0.0381,  0.2557, -0.1221,  ...,  0.2586,  0.0182, -0.0256]])),\n",
       "                           ('layer_3.linear.bias',\n",
       "                            tensor([ 1.7908e-02, -1.6474e-02, -1.1066e-01,  2.7437e-01,  7.9325e-01,\n",
       "                                     7.8987e-02,  3.3952e-01, -8.7965e-02,  1.5753e-01, -1.2900e-01,\n",
       "                                     7.6526e-02,  7.7629e-03,  5.0898e-01, -3.8382e-01, -6.2505e-02,\n",
       "                                     7.2312e-01,  4.5212e-02,  9.1312e-01,  4.5915e-02,  1.3952e-02,\n",
       "                                     2.2207e-01, -5.3636e-04,  1.4154e-01,  1.2470e-01,  1.3919e-01,\n",
       "                                     1.1014e-01,  1.1680e-01, -3.1510e-02,  4.0542e-02, -1.7219e-04,\n",
       "                                    -1.0441e-01,  5.2226e-01, -5.1104e-02,  3.9572e-01, -2.4648e-01,\n",
       "                                    -3.9327e-01, -1.4421e-01, -6.7385e-02,  2.2774e-02, -1.5080e-01,\n",
       "                                    -5.9285e-03,  1.3464e-01,  1.1147e-01, -2.1358e-01, -3.9889e-01,\n",
       "                                     1.2666e-01])),\n",
       "                           ('layer_3.normalizer.weight',\n",
       "                            tensor([ 0.4035,  0.9273,  0.3436,  0.8313, -0.5483,  0.5186,  0.3613,  0.3362,\n",
       "                                     0.7600,  0.4670,  1.1825,  0.7006,  0.4275,  1.0126,  0.9773,  0.3357,\n",
       "                                     0.2955,  0.3329,  0.3705, -0.0120,  0.8153,  0.9983,  0.7633,  0.8837,\n",
       "                                     0.3240,  0.8691,  0.9471,  0.8034,  0.6000,  0.8582,  0.3787,  0.6470,\n",
       "                                     1.0252,  0.7739,  0.3396,  0.8057,  0.8804,  0.7036,  0.8939,  0.5345,\n",
       "                                     0.9509,  0.7852,  0.8444,  0.6482,  0.7647,  0.9864])),\n",
       "                           ('layer_3.normalizer.bias',\n",
       "                            tensor([ 0.3733,  0.2051, -0.0269,  0.2724, -0.4801, -0.1726,  0.4889,  0.4670,\n",
       "                                     0.0054,  0.3607, -0.0175,  0.0667,  0.3025, -0.1931,  0.0393,  0.4796,\n",
       "                                    -0.4264,  0.4658,  0.4557, -0.0588,  0.1771,  0.1360, -0.1883,  0.3348,\n",
       "                                    -0.0160,  0.1065,  0.2562, -0.0518,  0.2925,  0.1273,  0.6136,  0.2823,\n",
       "                                    -0.1507,  0.1460,  0.0915, -0.2639,  0.0656,  0.1196, -0.1569,  0.1028,\n",
       "                                     0.0275,  0.4489,  0.1869, -0.4018, -0.2103, -0.0286])),\n",
       "                           ('layer_3.normalizer.running_mean',\n",
       "                            tensor([-0.9715, -2.2032, -1.8011,  0.9685,  0.6200, -0.9597,  0.7768, -2.1247,\n",
       "                                    -2.0955, -2.6104,  1.6368, -1.4368,  1.0332,  1.4593,  0.8677,  1.6211,\n",
       "                                    -1.0680,  1.0735, -0.7232,  1.2941, -0.8071, -1.6285, -2.1765, -1.8546,\n",
       "                                    -1.0937,  0.5600,  0.9602,  0.9767, -0.7245, -1.1330, -2.3668,  0.4982,\n",
       "                                     0.3226, -1.4879, -3.2258, -0.0994, -2.7357, -1.0780, -2.0709, -1.0271,\n",
       "                                    -1.8341,  1.0092, -0.7226, -0.3674,  3.3634, -0.3263])),\n",
       "                           ('layer_3.normalizer.running_var',\n",
       "                            tensor([ 4.4649,  9.8838,  5.2923,  4.5300,  5.1298,  1.6735,  5.8431,  8.8731,\n",
       "                                     4.8244,  8.9389,  6.5502,  4.1085,  7.3151,  6.8593,  4.8760,  9.5597,\n",
       "                                     1.4886,  6.5716,  3.2722,  0.5959,  4.1359,  7.5561,  4.8947,  5.4064,\n",
       "                                     2.4573,  3.7298,  4.4916,  4.9595,  2.8120,  7.7168, 10.7011,  4.4031,\n",
       "                                     4.6533,  5.6067,  8.5437,  3.1499,  7.7018,  4.7582,  4.0134,  2.9158,\n",
       "                                     5.3908,  7.7204,  3.1456,  2.2102, 10.8318,  2.5861])),\n",
       "                           ('layer_3.normalizer.num_batches_tracked',\n",
       "                            tensor(670)),\n",
       "                           ('layer_4.linear.weight',\n",
       "                            tensor([[ 0.0698, -0.0195, -0.0756,  ..., -0.0462,  0.0105, -0.0389],\n",
       "                                    [ 0.1114,  0.1341,  0.3744,  ..., -0.1303, -0.5447,  0.0424],\n",
       "                                    [ 0.4859,  0.2065,  0.2659,  ..., -0.2024, -0.3696, -0.2466],\n",
       "                                    ...,\n",
       "                                    [ 0.5584, -0.0504,  0.2195,  ..., -0.2966,  0.0918, -0.2569],\n",
       "                                    [-0.0763,  0.0830,  0.2275,  ...,  0.0154, -0.0329, -0.0522],\n",
       "                                    [-0.1180,  0.2637,  0.1172,  ...,  0.1356, -0.6853,  0.2353]])),\n",
       "                           ('layer_4.linear.bias',\n",
       "                            tensor([-0.0691, -0.1060, -0.0187,  0.3468,  0.1665,  0.0228, -0.0955, -0.0045,\n",
       "                                    -0.1590,  0.2351,  0.1438,  0.3307, -0.0113, -0.0621, -0.1006, -0.0504,\n",
       "                                     0.1788,  0.2348, -0.0194, -0.1862,  0.3357,  0.0535,  0.0694,  0.0870,\n",
       "                                    -0.1025,  0.2098,  0.0873,  0.1724,  0.0155, -0.0475,  0.0931,  0.3493])),\n",
       "                           ('layer_4.normalizer.weight',\n",
       "                            tensor([ 0.2297,  0.2990,  0.2737,  0.8078,  0.5716,  0.4337,  0.6599,  0.4357,\n",
       "                                     0.3786,  0.7697,  0.3827,  1.0374,  0.9383,  0.4150,  0.5763,  0.0082,\n",
       "                                     0.5816,  0.2989,  0.7998,  1.0263,  0.8123,  0.3771,  0.6268,  0.8554,\n",
       "                                     0.5588, -0.6344,  0.5484,  0.7461,  0.9628,  0.8320,  0.6235,  0.9862])),\n",
       "                           ('layer_4.normalizer.bias',\n",
       "                            tensor([-0.1278,  0.4389,  0.4260,  0.3198, -0.1430,  0.3581, -0.2091, -0.0930,\n",
       "                                     0.3896,  0.3542, -0.1799,  0.2433,  0.2380, -0.1205,  0.3009, -0.0899,\n",
       "                                     0.2727,  0.4550, -0.1858,  0.1964,  0.4114, -0.0596,  0.0278, -0.2187,\n",
       "                                     0.0882, -0.0525, -0.0552,  0.2251,  0.2028,  0.1410, -0.1418,  0.2488])),\n",
       "                           ('layer_4.normalizer.running_mean',\n",
       "                            tensor([-0.2209, -0.0189, -0.1345, -0.8261, -0.1632, -0.5029,  0.1678,  0.3956,\n",
       "                                    -0.2796, -0.5636, -0.1228, -0.5516, -0.8519,  0.3655, -0.5660, -0.3087,\n",
       "                                    -0.7080, -0.0173, -0.1170, -0.6635, -0.8329,  0.0423, -0.4747, -0.1199,\n",
       "                                    -0.5585,  0.8095,  0.2742, -0.8614, -0.7616, -0.3526,  0.0804, -0.6352])),\n",
       "                           ('layer_4.normalizer.running_var',\n",
       "                            tensor([ 0.1660,  9.9155,  9.3877, 10.0118,  1.8771,  8.6701,  0.9420,  1.2411,\n",
       "                                     7.6982,  7.8437,  0.5575,  8.9085, 10.7996,  1.3539,  6.6764,  0.0753,\n",
       "                                     6.6262,  9.5189,  0.6057,  5.4100,  8.8232,  1.7903,  4.0475,  1.0141,\n",
       "                                     3.2860,  5.7909,  1.9748,  6.6539,  7.9738,  4.0276,  0.9936,  6.8559])),\n",
       "                           ('layer_4.normalizer.num_batches_tracked',\n",
       "                            tensor(670)),\n",
       "                           ('output.weight',\n",
       "                            tensor([[ 0.0907,  0.3841,  0.4231,  0.2701,  0.1529,  0.3734,  0.1848,  0.1908,\n",
       "                                      0.3445,  0.2799,  0.2094,  0.2791,  0.2999,  0.2314,  0.3558,  0.0392,\n",
       "                                      0.3215,  0.3956,  0.1413,  0.2460,  0.2496,  0.1880,  0.2432,  0.1266,\n",
       "                                      0.2394, -0.7282,  0.2006,  0.2259,  0.2687,  0.2108,  0.1736,  0.2261]])),\n",
       "                           ('output.bias', tensor([0.1369]))]))])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "checker.checkpoints['mse_3']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### resue model using trainer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`xenonpy.model.training.Trainer` can load model and checkpoints from checker or from model directory directly."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xenonpy.model.training import Trainer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Trainer(clip_grad=None, cuda=None, epochs=200, loss_func=None,\n",
       "        lr_scheduler=None,\n",
       "        model=SequentialLinear(\n",
       "  (layer_0): LinearLayer(\n",
       "    (linear): Linear(in_features=290, out_features=180, bias=True)\n",
       "    (dropout): Dropout(p=0.1)\n",
       "    (normalizer): BatchNorm1d(180, eps=0.1, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (activation): ReLU()\n",
       "  )\n",
       "  (layer_1): LinearLayer(\n",
       "    (linear): Linear(...\n",
       "    (normalizer): BatchNorm1d(46, eps=0.1, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (activation): ReLU()\n",
       "  )\n",
       "  (layer_4): LinearLayer(\n",
       "    (linear): Linear(in_features=46, out_features=32, bias=True)\n",
       "    (dropout): Dropout(p=0.1)\n",
       "    (normalizer): BatchNorm1d(32, eps=0.1, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (activation): ReLU()\n",
       "  )\n",
       "  (output): Linear(in_features=32, out_features=1, bias=True)\n",
       "),\n",
       "        non_blocking=False, optimizer=None)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trainer = Trainer.load(from_=checker)\n",
    "trainer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following codes show how to reuse model for prediction."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>band_gap</th>\n",
       "      <th>composition</th>\n",
       "      <th>density</th>\n",
       "      <th>e_above_hull</th>\n",
       "      <th>efermi</th>\n",
       "      <th>elements</th>\n",
       "      <th>final_energy_per_atom</th>\n",
       "      <th>formation_energy_per_atom</th>\n",
       "      <th>pretty_formula</th>\n",
       "      <th>structure</th>\n",
       "      <th>volume</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>mp-1008807</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>{'Rb': 1.0, 'Cu': 1.0, 'O': 1.0}</td>\n",
       "      <td>4.784634</td>\n",
       "      <td>0.996372</td>\n",
       "      <td>1.100617</td>\n",
       "      <td>[Rb, Cu, O]</td>\n",
       "      <td>-3.302762</td>\n",
       "      <td>-0.186408</td>\n",
       "      <td>RbCuO</td>\n",
       "      <td>[[-3.05935361 -3.05935361 -3.05935361] Rb, [0....</td>\n",
       "      <td>57.268924</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mp-1009640</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>{'Pr': 1.0, 'N': 1.0}</td>\n",
       "      <td>8.145777</td>\n",
       "      <td>0.759393</td>\n",
       "      <td>5.213442</td>\n",
       "      <td>[Pr, N]</td>\n",
       "      <td>-7.082624</td>\n",
       "      <td>-0.714336</td>\n",
       "      <td>PrN</td>\n",
       "      <td>[[0. 0. 0.] Pr, [1.57925232 1.57925232 1.58276...</td>\n",
       "      <td>31.579717</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mp-1016825</td>\n",
       "      <td>0.7745</td>\n",
       "      <td>{'Hf': 1.0, 'Mg': 1.0, 'O': 3.0}</td>\n",
       "      <td>6.165888</td>\n",
       "      <td>0.589550</td>\n",
       "      <td>2.424570</td>\n",
       "      <td>[Hf, Mg, O]</td>\n",
       "      <td>-7.911723</td>\n",
       "      <td>-3.060060</td>\n",
       "      <td>HfMgO3</td>\n",
       "      <td>[[2.03622802 2.03622802 2.03622802] Hf, [0. 0....</td>\n",
       "      <td>67.541269</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            band_gap                       composition   density  \\\n",
       "mp-1008807    0.0000  {'Rb': 1.0, 'Cu': 1.0, 'O': 1.0}  4.784634   \n",
       "mp-1009640    0.0000             {'Pr': 1.0, 'N': 1.0}  8.145777   \n",
       "mp-1016825    0.7745  {'Hf': 1.0, 'Mg': 1.0, 'O': 3.0}  6.165888   \n",
       "\n",
       "            e_above_hull    efermi     elements  final_energy_per_atom  \\\n",
       "mp-1008807      0.996372  1.100617  [Rb, Cu, O]              -3.302762   \n",
       "mp-1009640      0.759393  5.213442      [Pr, N]              -7.082624   \n",
       "mp-1016825      0.589550  2.424570  [Hf, Mg, O]              -7.911723   \n",
       "\n",
       "            formation_energy_per_atom pretty_formula  \\\n",
       "mp-1008807                  -0.186408          RbCuO   \n",
       "mp-1009640                  -0.714336            PrN   \n",
       "mp-1016825                  -3.060060         HfMgO3   \n",
       "\n",
       "                                                    structure     volume  \n",
       "mp-1008807  [[-3.05935361 -3.05935361 -3.05935361] Rb, [0....  57.268924  \n",
       "mp-1009640  [[0. 0. 0.] Pr, [1.57925232 1.57925232 1.58276...  31.579717  \n",
       "mp-1016825  [[2.03622802 2.03622802 2.03622802] Hf, [0. 0....  67.541269  "
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# if you have not had the samples data\n",
    "# preset.build('mp_samples', api_key=<your materials project api key>)\n",
    "from xenonpy.datatools import preset\n",
    "\n",
    "data = preset.mp_samples\n",
    "data.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ave:atomic_number</th>\n",
       "      <th>ave:atomic_radius</th>\n",
       "      <th>ave:atomic_radius_rahm</th>\n",
       "      <th>ave:atomic_volume</th>\n",
       "      <th>ave:atomic_weight</th>\n",
       "      <th>ave:boiling_point</th>\n",
       "      <th>ave:bulk_modulus</th>\n",
       "      <th>ave:c6_gb</th>\n",
       "      <th>ave:covalent_radius_cordero</th>\n",
       "      <th>ave:covalent_radius_pyykko</th>\n",
       "      <th>...</th>\n",
       "      <th>min:num_s_valence</th>\n",
       "      <th>min:period</th>\n",
       "      <th>min:specific_heat</th>\n",
       "      <th>min:thermal_conductivity</th>\n",
       "      <th>min:vdw_radius</th>\n",
       "      <th>min:vdw_radius_alvarez</th>\n",
       "      <th>min:vdw_radius_mm3</th>\n",
       "      <th>min:vdw_radius_uff</th>\n",
       "      <th>min:sound_velocity</th>\n",
       "      <th>min:Polarizability</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>mp-1008807</td>\n",
       "      <td>24.666667</td>\n",
       "      <td>174.067140</td>\n",
       "      <td>209.333333</td>\n",
       "      <td>25.666667</td>\n",
       "      <td>55.004267</td>\n",
       "      <td>1297.063333</td>\n",
       "      <td>72.868680</td>\n",
       "      <td>1646.90</td>\n",
       "      <td>139.333333</td>\n",
       "      <td>128.333333</td>\n",
       "      <td>...</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.360</td>\n",
       "      <td>0.02658</td>\n",
       "      <td>152.0</td>\n",
       "      <td>150.0</td>\n",
       "      <td>182.0</td>\n",
       "      <td>349.5</td>\n",
       "      <td>317.5</td>\n",
       "      <td>0.802</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mp-1009640</td>\n",
       "      <td>33.000000</td>\n",
       "      <td>137.000000</td>\n",
       "      <td>232.500000</td>\n",
       "      <td>19.050000</td>\n",
       "      <td>77.457330</td>\n",
       "      <td>1931.200000</td>\n",
       "      <td>43.182441</td>\n",
       "      <td>1892.85</td>\n",
       "      <td>137.000000</td>\n",
       "      <td>123.500000</td>\n",
       "      <td>...</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.192</td>\n",
       "      <td>0.02583</td>\n",
       "      <td>155.0</td>\n",
       "      <td>166.0</td>\n",
       "      <td>193.0</td>\n",
       "      <td>360.6</td>\n",
       "      <td>333.6</td>\n",
       "      <td>1.100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mp-1016825</td>\n",
       "      <td>21.600000</td>\n",
       "      <td>153.120852</td>\n",
       "      <td>203.400000</td>\n",
       "      <td>13.920000</td>\n",
       "      <td>50.158400</td>\n",
       "      <td>1420.714000</td>\n",
       "      <td>76.663625</td>\n",
       "      <td>343.82</td>\n",
       "      <td>102.800000</td>\n",
       "      <td>96.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.146</td>\n",
       "      <td>0.02658</td>\n",
       "      <td>152.0</td>\n",
       "      <td>150.0</td>\n",
       "      <td>182.0</td>\n",
       "      <td>302.1</td>\n",
       "      <td>317.5</td>\n",
       "      <td>0.802</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 290 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            ave:atomic_number  ave:atomic_radius  ave:atomic_radius_rahm  \\\n",
       "mp-1008807          24.666667         174.067140              209.333333   \n",
       "mp-1009640          33.000000         137.000000              232.500000   \n",
       "mp-1016825          21.600000         153.120852              203.400000   \n",
       "\n",
       "            ave:atomic_volume  ave:atomic_weight  ave:boiling_point  \\\n",
       "mp-1008807          25.666667          55.004267        1297.063333   \n",
       "mp-1009640          19.050000          77.457330        1931.200000   \n",
       "mp-1016825          13.920000          50.158400        1420.714000   \n",
       "\n",
       "            ave:bulk_modulus  ave:c6_gb  ave:covalent_radius_cordero  \\\n",
       "mp-1008807         72.868680    1646.90                   139.333333   \n",
       "mp-1009640         43.182441    1892.85                   137.000000   \n",
       "mp-1016825         76.663625     343.82                   102.800000   \n",
       "\n",
       "            ave:covalent_radius_pyykko  ...  min:num_s_valence  min:period  \\\n",
       "mp-1008807                  128.333333  ...                1.0         2.0   \n",
       "mp-1009640                  123.500000  ...                2.0         2.0   \n",
       "mp-1016825                   96.000000  ...                2.0         2.0   \n",
       "\n",
       "            min:specific_heat  min:thermal_conductivity  min:vdw_radius  \\\n",
       "mp-1008807              0.360                   0.02658           152.0   \n",
       "mp-1009640              0.192                   0.02583           155.0   \n",
       "mp-1016825              0.146                   0.02658           152.0   \n",
       "\n",
       "            min:vdw_radius_alvarez  min:vdw_radius_mm3  min:vdw_radius_uff  \\\n",
       "mp-1008807                   150.0               182.0               349.5   \n",
       "mp-1009640                   166.0               193.0               360.6   \n",
       "mp-1016825                   150.0               182.0               302.1   \n",
       "\n",
       "            min:sound_velocity  min:Polarizability  \n",
       "mp-1008807               317.5               0.802  \n",
       "mp-1009640               333.6               1.100  \n",
       "mp-1016825               317.5               0.802  \n",
       "\n",
       "[3 rows x 290 columns]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>efermi</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>mp-1008807</td>\n",
       "      <td>1.100617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mp-1009640</td>\n",
       "      <td>5.213442</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mp-1016825</td>\n",
       "      <td>2.424570</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              efermi\n",
       "mp-1008807  1.100617\n",
       "mp-1009640  5.213442\n",
       "mp-1016825  2.424570"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from xenonpy.descriptor import Compositions\n",
    "\n",
    "prop = data['efermi'].dropna().to_frame()  # reshape to 2-D\n",
    "desc = Compositions(featurizers='classic').transform(data.loc[prop.index]['composition'])\n",
    "\n",
    "desc.head(3)\n",
    "prop.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Missing directory and/or file name information!\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred = trainer.predict(x_in=torch.tensor(desc.values, dtype=torch.float)).detach().numpy().flatten()\n",
    "y_true = prop.values.flatten()\n",
    "\n",
    "draw(y_true, y_pred, prop_name='Efermi ($eV$)')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
